]> git.r.bdr.sh - rbdr/serpentity/commitdiff
Rebuild
authorBen Beltran <redacted>
Mon, 9 Mar 2020 18:22:50 +0000 (13:22 -0500)
committerBen Beltran <redacted>
Mon, 9 Mar 2020 18:22:50 +0000 (13:22 -0500)
config/webpack.js
dist/serpentity.js
dist/serpentity.min.js

index 793e01131efa2ffb142e95e1d862374581921a3a..b213d0c2381c8b91f10367be76cdffff7e75b335 100644 (file)
@@ -1,12 +1,10 @@
-'use strict';
-
 const Path = require('path');
 const Webpack = require('webpack');
 
 module.exports = {
   entry: {
-   serpentity: './lib/serpentity.js',
-   "serpentity.min": './lib/serpentity.js',
+    serpentity: './lib/serpentity.js',
+    'serpentity.min': './lib/serpentity.js'
   },
 
   output: {
@@ -17,14 +15,11 @@ module.exports = {
   },
 
   module: {
-    loaders: [
+    rules: [
       {
         test: /\.js$/,
         exclude: /(node_modules|doc)/,
-        loader: 'babel-loader',
-        query: {
-          presets: ['es2015']
-        }
+        use: 'babel-loader'
       }
     ]
   },
@@ -35,16 +30,12 @@ module.exports = {
       Path.resolve(__dirname, '../lib')
     ],
 
-    extensions: ['.js'],
+    extensions: ['.js']
   },
 
   context: Path.resolve(__dirname, '..'),
 
-  plugins : [
-    new Webpack.optimize.UglifyJsPlugin({
-      include: /\.min\.js$/,
-      minimize: true
-    })
-  ]
+  optimization: {
+    minimize: true
+  }
 };
-
index d59bd638401b72ac523f069efb9ee3f6f24d35bf..e57efd56942090a38a395e07665afc3d412b59cd 100644 (file)
@@ -1,848 +1 @@
-(function webpackUniversalModuleDefinition(root, factory) {
-       if(typeof exports === 'object' && typeof module === 'object')
-               module.exports = factory();
-       else if(typeof define === 'function' && define.amd)
-               define([], factory);
-       else if(typeof exports === 'object')
-               exports["Serpentity"] = factory();
-       else
-               root["Serpentity"] = factory();
-})(this, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/       // The module cache
-/******/       var installedModules = {};
-/******/
-/******/       // The require function
-/******/       function __webpack_require__(moduleId) {
-/******/
-/******/               // Check if module is in cache
-/******/               if(installedModules[moduleId])
-/******/                       return installedModules[moduleId].exports;
-/******/
-/******/               // Create a new module (and put it into the cache)
-/******/               var module = installedModules[moduleId] = {
-/******/                       i: moduleId,
-/******/                       l: false,
-/******/                       exports: {}
-/******/               };
-/******/
-/******/               // Execute the module function
-/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/               // Flag the module as loaded
-/******/               module.l = true;
-/******/
-/******/               // Return the exports of the module
-/******/               return module.exports;
-/******/       }
-/******/
-/******/
-/******/       // expose the modules object (__webpack_modules__)
-/******/       __webpack_require__.m = modules;
-/******/
-/******/       // expose the module cache
-/******/       __webpack_require__.c = installedModules;
-/******/
-/******/       // identity function for calling harmony imports with the correct context
-/******/       __webpack_require__.i = function(value) { return value; };
-/******/
-/******/       // define getter function for harmony exports
-/******/       __webpack_require__.d = function(exports, name, getter) {
-/******/               if(!__webpack_require__.o(exports, name)) {
-/******/                       Object.defineProperty(exports, name, {
-/******/                               configurable: false,
-/******/                               enumerable: true,
-/******/                               get: getter
-/******/                       });
-/******/               }
-/******/       };
-/******/
-/******/       // getDefaultExport function for compatibility with non-harmony modules
-/******/       __webpack_require__.n = function(module) {
-/******/               var getter = module && module.__esModule ?
-/******/                       function getDefault() { return module['default']; } :
-/******/                       function getModuleExports() { return module; };
-/******/               __webpack_require__.d(getter, 'a', getter);
-/******/               return getter;
-/******/       };
-/******/
-/******/       // Object.prototype.hasOwnProperty.call
-/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/       // __webpack_public_path__
-/******/       __webpack_require__.p = "";
-/******/
-/******/       // Load entry module and return exports
-/******/       return __webpack_require__(__webpack_require__.s = 5);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
- * Components store data. Nothing to say here really, just
- * inherit and add a prototype, or don't even inherit, see?
- * It's just an empty class, so what I'm trying to say is your
- * components can be any class whatsoever.
- */
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Component = function Component(config) {
-  _classCallCheck(this, Component);
-
-  Object.assign(this, config);
-};
-
-module.exports = Component;
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
- * The entity gives the entity framework its name. It exists only
- * to hold components.
- */
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Entity = function () {
-  function Entity(config) {
-    _classCallCheck(this, Entity);
-
-    this._componentKeys = [];
-    this._components = [];
-
-    Object.assign(this, config);
-  }
-
-  /*
-   * Adds a component to the entity.
-   *
-   * returns true if added, false if already present
-   */
-
-
-  _createClass(Entity, [{
-    key: 'addComponent',
-    value: function addComponent(component) {
-
-      if (this._componentKeys.indexOf(component.constructor) >= 0) {
-        return false;
-      }
-      this._componentKeys.push(component.constructor);
-      this._components.push(component);
-      return true;
-    }
-
-    /*
-     * returns true if component is included, false otherwise
-     */
-
-  }, {
-    key: 'hasComponent',
-    value: function hasComponent(componentClass) {
-
-      if (this._componentKeys.indexOf(componentClass) >= 0) {
-        return true;
-      }
-      return false;
-    }
-
-    /*
-     * returns the component associated with that key
-     */
-
-  }, {
-    key: 'getComponent',
-    value: function getComponent(componentClass) {
-
-      var position = this._componentKeys.indexOf(componentClass);
-      if (position >= 0) {
-        return this._components[position];
-      }
-    }
-  }]);
-
-  return Entity;
-}();
-
-module.exports = Entity;
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
- * A node describes a set of components in order to describe entities
- * that include them.
- */
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Node = function () {
-  _createClass(Node, null, [{
-    key: 'matches',
-
-
-    /*
-     * Returns true if the given entity matches the defined protocol,
-     * false otherwise
-     */
-    value: function matches(entity) {
-
-      var typeNames = Object.keys(this.types);
-
-      var _iteratorNormalCompletion = true;
-      var _didIteratorError = false;
-      var _iteratorError = undefined;
-
-      try {
-        for (var _iterator = typeNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
-          var typeName = _step.value;
-
-
-          var type = this.types[typeName];
-          var matched = false;
-
-          if (entity.hasComponent(type)) {
-            matched = true;
-          }
-
-          if (!matched) {
-            return false;
-          }
-        }
-      } catch (err) {
-        _didIteratorError = true;
-        _iteratorError = err;
-      } finally {
-        try {
-          if (!_iteratorNormalCompletion && _iterator.return) {
-            _iterator.return();
-          }
-        } finally {
-          if (_didIteratorError) {
-            throw _iteratorError;
-          }
-        }
-      }
-
-      return true;
-    }
-  }]);
-
-  function Node(config) {
-    _classCallCheck(this, Node);
-
-    this.types = {};
-
-    Object.assign(this, config);
-  }
-
-  return Node;
-}();
-
-module.exports = Node;
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
- * Node Collections contain nodes, in order to keep the lists of nodes
- * that belong to each type.
- *
- * It has a type which is the class name of the node, and an array of
- * instances of that class.
- */
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var NodeCollection = function () {
-  function NodeCollection(config) {
-    _classCallCheck(this, NodeCollection);
-
-    this.nodes = [];
-    this.type = null;
-
-    Object.assign(this, config);
-  }
-
-  /*
-   * Creates a node for an entity if it matches, and adds it to the
-   * node list.
-   *
-   * Returns true if added, false otherwise.
-   */
-
-
-  _createClass(NodeCollection, [{
-    key: 'add',
-    value: function add(entity) {
-
-      if (this.type.matches(entity) && !this._entityExists(entity)) {
-
-        var node = new this.type({});
-        var types = this.type.types;
-        var typeNames = Object.keys(types);
-
-        node.entity = entity;
-
-        var _iteratorNormalCompletion = true;
-        var _didIteratorError = false;
-        var _iteratorError = undefined;
-
-        try {
-          for (var _iterator = typeNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
-            var typeName = _step.value;
-
-            node[typeName] = entity.getComponent(types[typeName]);
-          }
-        } catch (err) {
-          _didIteratorError = true;
-          _iteratorError = err;
-        } finally {
-          try {
-            if (!_iteratorNormalCompletion && _iterator.return) {
-              _iterator.return();
-            }
-          } finally {
-            if (_didIteratorError) {
-              throw _iteratorError;
-            }
-          }
-        }
-
-        this.nodes.push(node);
-
-        return true;
-      }
-
-      return false;
-    }
-
-    /*
-     * Removes an entity by removing its related node from the list of nodes
-     *
-     * returns true if it was removed, false otherwise.
-     */
-
-  }, {
-    key: 'remove',
-    value: function remove(entity) {
-
-      var foundIndex = -1;
-
-      var found = this.nodes.some(function (node, i) {
-
-        if (node.entity === entity) {
-          foundIndex = i;
-          return true;
-        }
-      });
-
-      if (found) {
-        this.nodes.splice(foundIndex, 1);
-      }
-
-      return found;
-    }
-
-    /*
-     * Checks whether we already have nodes for this entity.
-     */
-
-  }, {
-    key: '_entityExists',
-    value: function _entityExists(entity) {
-
-      var found = false;
-
-      var _iteratorNormalCompletion2 = true;
-      var _didIteratorError2 = false;
-      var _iteratorError2 = undefined;
-
-      try {
-        for (var _iterator2 = this.nodes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
-          var node = _step2.value;
-
-          if (node.entity === entity) {
-            found = true;
-          }
-        }
-      } catch (err) {
-        _didIteratorError2 = true;
-        _iteratorError2 = err;
-      } finally {
-        try {
-          if (!_iteratorNormalCompletion2 && _iterator2.return) {
-            _iterator2.return();
-          }
-        } finally {
-          if (_didIteratorError2) {
-            throw _iteratorError2;
-          }
-        }
-      }
-
-      return found;
-    }
-  }]);
-
-  return NodeCollection;
-}();
-
-module.exports = NodeCollection;
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
- * Systems contain most of the logic, and work with nodes in order to
- * act and change their values.
- *
- * You usually want to inherit from this class and override the
- * three methods. They are shown here to document the interface.
- */
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var System = function () {
-  function System() {
-    _classCallCheck(this, System);
-  }
-
-  _createClass(System, [{
-    key: 'added',
-
-
-    /*
-     * This will be run when the system is added to the engine
-     */
-    value: function added() {}
-    // Override with added(engine)
-    // Receives an instance of the serpentity engine
-
-
-    /*
-     * This will be run when the system is removed from the engine
-     */
-
-  }, {
-    key: 'removed',
-    value: function removed() {}
-    // Override with removed(engine)
-    // Receives an instance of the serpentity engine
-
-
-    /*
-     * This will run every time the engine's update method is called
-     */
-
-  }, {
-    key: 'update',
-    value: function update() {
-      // Override with update(dt)
-      // Receives a delta of the time
-    }
-  }]);
-
-  return System;
-}();
-
-module.exports = System;
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
-Serpentity is a simple entity framework inspired by Ash.
-
-Usage:
-
-    const Serpentity = require('serpentity');
-
-## Instantiating an engine
-
-    const engine = new Serpentity();
-
-Add entities or systems, systems are added with a priority (the smaller
-the number, the earlier it will be called):
-
-    engine.addEntity(entityFactory());
-    engine.addSystem(new GameSystem(), priority);
-
-Update all systems:
-
-    engine.update(dt);
-
-Remove entities or systems:
-
-    engine.removeEntity(entityReference);
-    engine.removeSystem(systemReference);
-
-## Creating Entities
-
-Entities are the basic object of Serpentity, and they do nothing.
-
-    const entity = new Serpentity.Entity();
-
-All the behavior is added through components
-
-## Creating Components
-
-Components define data that we can add to an entity. This data will
-eventually be consumed by "Systems"
-
-    const PositionComponent = class PositionComponent extends Serpentity.Component {
-      constructor(config) {
-
-        this.x = 0;
-        this.y = 0;
-
-        super(config);
-      }
-    };
-
-You can add components to entities by using the add method:
-
-    entity.addComponent(new PositionComponent());
-
-
-Systems can refer to entities by requesting nodes.
-
-## Working with Nodes
-
-Nodes are sets of components that you define, so your system can require
-entities that always follow the API defined in the node.
-
-    const MovementNode = class MovementNode extends Serpentity.Node;
-    MovementNode.position = PositionComponent;
-    MovementNode.motion = MotionComponent;
-
-You can then request an array of all the nodes representing entities
-that comply with that API
-
-    engine.getNodes(MovementNode);
-
-## Creating Systems
-
-Systems are called on every update, and they use components through nodes.
-
-    const TestSystem = class TestSystem extends Serpentity.System {
-      added(engine){
-
-        this.nodeList = engine.getNodes(MovementNode);
-      }
-
-      removed(engine){
-
-        this.nodeList = undefined;
-      }
-
-      update(dt){
-
-        for (const node of this.nodeList) {
-          console.log(`Current position is: ${node.position.x},${node.position.y}`);
-        }
-      }
-    };
-
-## That's it
-
-Just run `engine.update(dt)` in your game loop :D
-
-*/
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Serpentity = function () {
-  function Serpentity(config) {
-    _classCallCheck(this, Serpentity);
-
-    this.systems = [];
-    this.entities = [];
-    this._nodeCollections = [];
-    this._nodeCollectionKeys = [];
-
-    Object.assign(this, config);
-  }
-
-  /*
-   * Adds a system to the engine, so its update method will be called
-   * with the others. Triggers added hook.
-   *
-   * returns true if added succesfully, false if already added
-   */
-
-
-  _createClass(Serpentity, [{
-    key: 'addSystem',
-    value: function addSystem(system, priority) {
-
-      if (this.systems.indexOf(system) >= 0) {
-        return false;
-      }
-
-      system.priority = priority;
-
-      var lastIndex = 0;
-
-      var found = this.systems.some(function (existingSystem, i) {
-
-        lastIndex = i;
-        if (existingSystem.priority >= system.priority) {
-          return true;
-        }
-      });
-
-      if (!found) {
-        lastIndex += 1;
-      }
-
-      this.systems.splice(lastIndex, 0, system);
-      system.added(this);
-      return true;
-    }
-
-    /*
-     * Removes a system from the engine, so its update method will no
-     * longer will be called. Triggers the removed hook.
-     *
-     * returns true if removed succesfully, false if already added
-     */
-
-  }, {
-    key: 'removeSystem',
-    value: function removeSystem(system) {
-
-      var position = this.systems.indexOf(system);
-      if (position >= 0) {
-        this.systems[position].removed(this);
-        this.systems.splice(position, 1);
-        return true;
-      }
-
-      return false;
-    }
-
-    /*
-     * Adds an entity to the engine, adds to existing node collections
-     *
-     * returns true if added, false if already there
-     */
-
-  }, {
-    key: 'addEntity',
-    value: function addEntity(entity) {
-
-      if (this.entities.indexOf(entity) >= 0) {
-        return false;
-      }
-      this.entities.push(entity);
-
-      var _iteratorNormalCompletion = true;
-      var _didIteratorError = false;
-      var _iteratorError = undefined;
-
-      try {
-        for (var _iterator = this._nodeCollections[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
-          var collection = _step.value;
-
-          collection.add(entity);
-        }
-      } catch (err) {
-        _didIteratorError = true;
-        _iteratorError = err;
-      } finally {
-        try {
-          if (!_iteratorNormalCompletion && _iterator.return) {
-            _iterator.return();
-          }
-        } finally {
-          if (_didIteratorError) {
-            throw _iteratorError;
-          }
-        }
-      }
-
-      return true;
-    }
-
-    /*
-     * Removes entity from system, removing from all node collections
-     *
-     * returns true if removed, false if not present
-     */
-
-  }, {
-    key: 'removeEntity',
-    value: function removeEntity(entity) {
-
-      var position = this.entities.indexOf(entity);
-      if (position >= 0) {
-        var _iteratorNormalCompletion2 = true;
-        var _didIteratorError2 = false;
-        var _iteratorError2 = undefined;
-
-        try {
-          for (var _iterator2 = this._nodeCollections[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
-            var collection = _step2.value;
-
-            collection.remove(entity);
-          }
-        } catch (err) {
-          _didIteratorError2 = true;
-          _iteratorError2 = err;
-        } finally {
-          try {
-            if (!_iteratorNormalCompletion2 && _iterator2.return) {
-              _iterator2.return();
-            }
-          } finally {
-            if (_didIteratorError2) {
-              throw _iteratorError2;
-            }
-          }
-        }
-
-        this.entities.splice(position, 1);
-        return true;
-      }
-
-      return false;
-    }
-
-    /*
-     * Given a Node Class, retrieves a list of all the nodes for each
-     * applicable entity.
-     */
-
-  }, {
-    key: 'getNodes',
-    value: function getNodes(nodeType) {
-
-      var position = this._nodeCollectionKeys.indexOf(nodeType);
-
-      if (position >= 0) {
-        return this._nodeCollections[position].nodes;
-      }
-
-      var nodeCollection = new Serpentity.NodeCollection({
-        type: nodeType
-      });
-
-      this._nodeCollectionKeys.push(nodeType);
-      this._nodeCollections.push(nodeCollection);
-
-      var _iteratorNormalCompletion3 = true;
-      var _didIteratorError3 = false;
-      var _iteratorError3 = undefined;
-
-      try {
-        for (var _iterator3 = this.entities[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
-          var entity = _step3.value;
-
-          nodeCollection.add(entity);
-        }
-      } catch (err) {
-        _didIteratorError3 = true;
-        _iteratorError3 = err;
-      } finally {
-        try {
-          if (!_iteratorNormalCompletion3 && _iterator3.return) {
-            _iterator3.return();
-          }
-        } finally {
-          if (_didIteratorError3) {
-            throw _iteratorError3;
-          }
-        }
-      }
-
-      return nodeCollection.nodes;
-    }
-
-    /*
-     * Calls update for every loaded system.
-     */
-
-  }, {
-    key: 'update',
-    value: function update(dt) {
-      var _iteratorNormalCompletion4 = true;
-      var _didIteratorError4 = false;
-      var _iteratorError4 = undefined;
-
-      try {
-
-        for (var _iterator4 = this.systems[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
-          var system = _step4.value;
-
-          system.update(dt);
-        }
-      } catch (err) {
-        _didIteratorError4 = true;
-        _iteratorError4 = err;
-      } finally {
-        try {
-          if (!_iteratorNormalCompletion4 && _iterator4.return) {
-            _iterator4.return();
-          }
-        } finally {
-          if (_didIteratorError4) {
-            throw _iteratorError4;
-          }
-        }
-      }
-    }
-  }]);
-
-  return Serpentity;
-}();
-
-// Add namespaced objects.
-Serpentity.Component = __webpack_require__(0);
-Serpentity.Entity = __webpack_require__(1);
-Serpentity.Node = __webpack_require__(2);
-Serpentity.NodeCollection = __webpack_require__(3);
-Serpentity.System = __webpack_require__(4);
-
-module.exports = Serpentity;
-
-/***/ })
-/******/ ]);
-});
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Serpentity=t():e.Serpentity=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";var r,i="object"==typeof Reflect?Reflect:null,s=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function u(){u.init.call(this)}e.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var c=10;function f(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function p(e){return void 0===e._maxListeners?u.defaultMaxListeners:e._maxListeners}function l(e,t,n,r){var i,s,o,u;if(f(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),o=s[t]),void 0===o)o=s[t]=n,++e._eventsCount;else if("function"==typeof o?o=s[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(i=p(e))>0&&o.length>i&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,u=c,console&&console.warn&&console.warn(u)}return e}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function a(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=h.bind(r);return i.listener=n,r.wrapFn=i,i}function d(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):v(i,i.length)}function y(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function v(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}Object.defineProperty(u,"defaultMaxListeners",{enumerable:!0,get:function(){return c},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");c=e}}),u.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},u.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},u.prototype.getMaxListeners=function(){return p(this)},u.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var u=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw u.context=o,u}var c=i[e];if(void 0===c)return!1;if("function"==typeof c)s(c,this,t);else{var f=c.length,p=v(c,f);for(n=0;n<f;++n)s(p[n],this,t)}return!0},u.prototype.addListener=function(e,t){return l(this,e,t,!1)},u.prototype.on=u.prototype.addListener,u.prototype.prependListener=function(e,t){return l(this,e,t,!0)},u.prototype.once=function(e,t){return f(t),this.on(e,a(this,e,t)),this},u.prototype.prependOnceListener=function(e,t){return f(t),this.prependListener(e,a(this,e,t)),this},u.prototype.removeListener=function(e,t){var n,r,i,s,o;if(f(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===t||n[s].listener===t){o=n[s].listener,i=s;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,o||t)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,s=Object.keys(n);for(r=0;r<s.length;++r)"removeListener"!==(i=s[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},u.prototype.listeners=function(e){return d(this,e,!0)},u.prototype.rawListeners=function(e){return d(this,e,!1)},u.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):y.call(e,t)},u.prototype.listenerCount=y,u.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){"use strict";n.r(t),n.d(t,"Component",(function(){return r})),n.d(t,"Entity",(function(){return i})),n.d(t,"Node",(function(){return s})),n.d(t,"System",(function(){return o})),n.d(t,"default",(function(){return f}));class r{constructor(e){Object.assign(this,e)}}class i{constructor(e){this._componentKeys=[],this._components=[],Object.assign(this,e)}addComponent(e){return!(this._componentKeys.indexOf(e.constructor)>=0)&&(this._componentKeys.push(e.constructor),this._components.push(e),!0)}hasComponent(e){return this._componentKeys.indexOf(e)>=0}getComponent(e){const t=this._componentKeys.indexOf(e);if(t>=0)return this._components[t]}}class s{static matches(e){const t=Object.keys(this.types);for(const n of t){const t=this.types[n];let r=!1;if(e.hasComponent(t)&&(r=!0),!r)return!1}return!0}constructor(e){this.types={},Object.assign(this,e)}}class o{added(){}removed(){}update(){}}const u=n(0);class c extends u{constructor(e){super(),this.nodes=[],this.type=null,Object.assign(this,e)}add(e){if(this.type.matches(e)&&!this._entityExists(e)){const t=new this.type({}),n=this.type.types,r=Object.keys(n);t.entity=e;for(const i of r)t[i]=e.getComponent(n[i]);return this.nodes.push(t),this.emit("nodeAdded",{node:t}),!0}return!1}remove(e){let t=-1,n=null;const r=this.nodes.some((r,i)=>{if(r.entity===e)return t=i,n=r,!0});return r&&(this.nodes.splice(t,1),this.emit("nodeRemoved",{node:n})),r}_entityExists(e){let t=!1;for(const n of this.nodes)n.entity===e&&(t=!0);return t}}c.prototype[Symbol.iterator]=function*(){yield*this.nodes};class f{constructor(e){this.systems=[],this.entities=[],this._nodeCollections=[],this._nodeCollectionKeys=[],Object.assign(this,e)}addSystem(e,t){if(this.systems.indexOf(e)>=0)return!1;e.priority=t;let n=0;return this.systems.some((t,r)=>{if(n=r,t.priority>=e.priority)return!0})||(n+=1),this.systems.splice(n,0,e),e.added(this),!0}removeSystem(e){const t=this.systems.indexOf(e);return t>=0&&(this.systems[t].removed(this),this.systems.splice(t,1),!0)}addEntity(e){if(this.entities.indexOf(e)>=0)return!1;this.entities.push(e);for(const t of this._nodeCollections)t.add(e);return!0}removeEntity(e){const t=this.entities.indexOf(e);if(t>=0){for(const t of this._nodeCollections)t.remove(e);return this.entities.splice(t,1),!0}return!1}getNodes(e){const t=this._nodeCollectionKeys.indexOf(e);if(t>=0)return this._nodeCollections[t].nodes;const n=new c({type:e});this._nodeCollectionKeys.push(e),this._nodeCollections.push(n);for(const e of this.entities)n.add(e);return n}update(e){for(const t of this.systems)t.update(e)}}}])}));
index 7f431a2bb3662cf8522023faecaf5823a5e16886..2c4303952dfbad106a87de9ebf3318c6e9704651 100644 (file)
@@ -1 +1 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Serpentity=e():t.Serpentity=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=5)}([function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function t(e){r(this,t),Object.assign(this,e)};t.exports=o},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e){r(this,t),this._componentKeys=[],this._components=[],Object.assign(this,e)}return o(t,[{key:"addComponent",value:function(t){return!(this._componentKeys.indexOf(t.constructor)>=0)&&(this._componentKeys.push(t.constructor),this._components.push(t),!0)}},{key:"hasComponent",value:function(t){return this._componentKeys.indexOf(t)>=0}},{key:"getComponent",value:function(t){var e=this._componentKeys.indexOf(t);if(e>=0)return this._components[e]}}]),t}();t.exports=i},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e){r(this,t),this.types={},Object.assign(this,e)}return o(t,null,[{key:"matches",value:function(t){var e=Object.keys(this.types),n=!0,r=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done);n=!0){var u=i.value,a=this.types[u],c=!1;if(t.hasComponent(a)&&(c=!0),!c)return!1}}catch(t){r=!0,o=t}finally{try{!n&&s.return&&s.return()}finally{if(r)throw o}}return!0}}]),t}();t.exports=i},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e){r(this,t),this.nodes=[],this.type=null,Object.assign(this,e)}return o(t,[{key:"add",value:function(t){if(this.type.matches(t)&&!this._entityExists(t)){var e=new this.type({}),n=this.type.types,r=Object.keys(n);e.entity=t;var o=!0,i=!1,s=void 0;try{for(var u,a=r[Symbol.iterator]();!(o=(u=a.next()).done);o=!0){var c=u.value;e[c]=t.getComponent(n[c])}}catch(t){i=!0,s=t}finally{try{!o&&a.return&&a.return()}finally{if(i)throw s}}return this.nodes.push(e),!0}return!1}},{key:"remove",value:function(t){var e=-1,n=this.nodes.some(function(n,r){if(n.entity===t)return e=r,!0});return n&&this.nodes.splice(e,1),n}},{key:"_entityExists",value:function(t){var e=!1,n=!0,r=!1,o=void 0;try{for(var i,s=this.nodes[Symbol.iterator]();!(n=(i=s.next()).done);n=!0){i.value.entity===t&&(e=!0)}}catch(t){r=!0,o=t}finally{try{!n&&s.return&&s.return()}finally{if(r)throw o}}return e}}]),t}();t.exports=i},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(){r(this,t)}return o(t,[{key:"added",value:function(){}},{key:"removed",value:function(){}},{key:"update",value:function(){}}]),t}();t.exports=i},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function(){function t(e){r(this,t),this.systems=[],this.entities=[],this._nodeCollections=[],this._nodeCollectionKeys=[],Object.assign(this,e)}return o(t,[{key:"addSystem",value:function(t,e){if(this.systems.indexOf(t)>=0)return!1;t.priority=e;var n=0;return this.systems.some(function(e,r){if(n=r,e.priority>=t.priority)return!0})||(n+=1),this.systems.splice(n,0,t),t.added(this),!0}},{key:"removeSystem",value:function(t){var e=this.systems.indexOf(t);return e>=0&&(this.systems[e].removed(this),this.systems.splice(e,1),!0)}},{key:"addEntity",value:function(t){if(this.entities.indexOf(t)>=0)return!1;this.entities.push(t);var e=!0,n=!1,r=void 0;try{for(var o,i=this._nodeCollections[Symbol.iterator]();!(e=(o=i.next()).done);e=!0){o.value.add(t)}}catch(t){n=!0,r=t}finally{try{!e&&i.return&&i.return()}finally{if(n)throw r}}return!0}},{key:"removeEntity",value:function(t){var e=this.entities.indexOf(t);if(e>=0){var n=!0,r=!1,o=void 0;try{for(var i,s=this._nodeCollections[Symbol.iterator]();!(n=(i=s.next()).done);n=!0){i.value.remove(t)}}catch(t){r=!0,o=t}finally{try{!n&&s.return&&s.return()}finally{if(r)throw o}}return this.entities.splice(e,1),!0}return!1}},{key:"getNodes",value:function(e){var n=this._nodeCollectionKeys.indexOf(e);if(n>=0)return this._nodeCollections[n].nodes;var r=new t.NodeCollection({type:e});this._nodeCollectionKeys.push(e),this._nodeCollections.push(r);var o=!0,i=!1,s=void 0;try{for(var u,a=this.entities[Symbol.iterator]();!(o=(u=a.next()).done);o=!0){var c=u.value;r.add(c)}}catch(t){i=!0,s=t}finally{try{!o&&a.return&&a.return()}finally{if(i)throw s}}return r.nodes}},{key:"update",value:function(t){var e=!0,n=!1,r=void 0;try{for(var o,i=this.systems[Symbol.iterator]();!(e=(o=i.next()).done);e=!0){o.value.update(t)}}catch(t){n=!0,r=t}finally{try{!e&&i.return&&i.return()}finally{if(n)throw r}}}}]),t}();i.Component=n(0),i.Entity=n(1),i.Node=n(2),i.NodeCollection=n(3),i.System=n(4),t.exports=i}])});
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Serpentity=t():e.Serpentity=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";var r,i="object"==typeof Reflect?Reflect:null,s=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function u(){u.init.call(this)}e.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var c=10;function f(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function p(e){return void 0===e._maxListeners?u.defaultMaxListeners:e._maxListeners}function l(e,t,n,r){var i,s,o,u;if(f(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),o=s[t]),void 0===o)o=s[t]=n,++e._eventsCount;else if("function"==typeof o?o=s[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(i=p(e))>0&&o.length>i&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,u=c,console&&console.warn&&console.warn(u)}return e}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function a(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=h.bind(r);return i.listener=n,r.wrapFn=i,i}function d(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(i):v(i,i.length)}function y(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function v(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}Object.defineProperty(u,"defaultMaxListeners",{enumerable:!0,get:function(){return c},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");c=e}}),u.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},u.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},u.prototype.getMaxListeners=function(){return p(this)},u.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var u=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw u.context=o,u}var c=i[e];if(void 0===c)return!1;if("function"==typeof c)s(c,this,t);else{var f=c.length,p=v(c,f);for(n=0;n<f;++n)s(p[n],this,t)}return!0},u.prototype.addListener=function(e,t){return l(this,e,t,!1)},u.prototype.on=u.prototype.addListener,u.prototype.prependListener=function(e,t){return l(this,e,t,!0)},u.prototype.once=function(e,t){return f(t),this.on(e,a(this,e,t)),this},u.prototype.prependOnceListener=function(e,t){return f(t),this.prependListener(e,a(this,e,t)),this},u.prototype.removeListener=function(e,t){var n,r,i,s,o;if(f(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===t||n[s].listener===t){o=n[s].listener,i=s;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,i),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,o||t)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var i,s=Object.keys(n);for(r=0;r<s.length;++r)"removeListener"!==(i=s[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},u.prototype.listeners=function(e){return d(this,e,!0)},u.prototype.rawListeners=function(e){return d(this,e,!1)},u.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):y.call(e,t)},u.prototype.listenerCount=y,u.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){"use strict";n.r(t),n.d(t,"Component",(function(){return r})),n.d(t,"Entity",(function(){return i})),n.d(t,"Node",(function(){return s})),n.d(t,"System",(function(){return o})),n.d(t,"default",(function(){return f}));class r{constructor(e){Object.assign(this,e)}}class i{constructor(e){this._componentKeys=[],this._components=[],Object.assign(this,e)}addComponent(e){return!(this._componentKeys.indexOf(e.constructor)>=0)&&(this._componentKeys.push(e.constructor),this._components.push(e),!0)}hasComponent(e){return this._componentKeys.indexOf(e)>=0}getComponent(e){const t=this._componentKeys.indexOf(e);if(t>=0)return this._components[t]}}class s{static matches(e){const t=Object.keys(this.types);for(const n of t){const t=this.types[n];let r=!1;if(e.hasComponent(t)&&(r=!0),!r)return!1}return!0}constructor(e){this.types={},Object.assign(this,e)}}class o{added(){}removed(){}update(){}}const u=n(0);class c extends u{constructor(e){super(),this.nodes=[],this.type=null,Object.assign(this,e)}add(e){if(this.type.matches(e)&&!this._entityExists(e)){const t=new this.type({}),n=this.type.types,r=Object.keys(n);t.entity=e;for(const i of r)t[i]=e.getComponent(n[i]);return this.nodes.push(t),this.emit("nodeAdded",{node:t}),!0}return!1}remove(e){let t=-1,n=null;const r=this.nodes.some((r,i)=>{if(r.entity===e)return t=i,n=r,!0});return r&&(this.nodes.splice(t,1),this.emit("nodeRemoved",{node:n})),r}_entityExists(e){let t=!1;for(const n of this.nodes)n.entity===e&&(t=!0);return t}}c.prototype[Symbol.iterator]=function*(){yield*this.nodes};class f{constructor(e){this.systems=[],this.entities=[],this._nodeCollections=[],this._nodeCollectionKeys=[],Object.assign(this,e)}addSystem(e,t){if(this.systems.indexOf(e)>=0)return!1;e.priority=t;let n=0;return this.systems.some((t,r)=>{if(n=r,t.priority>=e.priority)return!0})||(n+=1),this.systems.splice(n,0,e),e.added(this),!0}removeSystem(e){const t=this.systems.indexOf(e);return t>=0&&(this.systems[t].removed(this),this.systems.splice(t,1),!0)}addEntity(e){if(this.entities.indexOf(e)>=0)return!1;this.entities.push(e);for(const t of this._nodeCollections)t.add(e);return!0}removeEntity(e){const t=this.entities.indexOf(e);if(t>=0){for(const t of this._nodeCollections)t.remove(e);return this.entities.splice(t,1),!0}return!1}getNodes(e){const t=this._nodeCollectionKeys.indexOf(e);if(t>=0)return this._nodeCollections[t].nodes;const n=new c({type:e});this._nodeCollectionKeys.push(e),this._nodeCollections.push(n);for(const e of this.entities)n.add(e);return n}update(e){for(const t of this.systems)t.update(e)}}}])}));
\ No newline at end of file