UNPKG

6.03 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.Entity = undefined;
7
8var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
9
10var _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; }; }();
11
12var _command = require('./command');
13
14function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
16function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
17
18function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
19
20/**
21 * An Entity is a command that injects a context with a unique ID. State
22 * is not preserved, but rather just provided. The current and previous states
23 * are captured and provided to the scope block function given to the intance
24 * entity function. The previous state is exposed as a property on the curren
25 * state object. Basically, this class just constructs a command function
26 * that accepts some input, injects a regl context, and passes it to an optional
27 * block function. The context just defines an `entityID` property. Most
28 * classes inherit from Component, which inherits Entity.
29 */
30var entityCount = 0;
31
32var Entity = exports.Entity = function (_Command) {
33 _inherits(Entity, _Command);
34
35 _createClass(Entity, null, [{
36 key: 'id',
37 value: function id() {
38 return ++entityCount;
39 }
40 }]);
41
42 function Entity(ctx) {
43 _classCallCheck(this, Entity);
44
45 var id = Entity.id();
46 var injectContext = ctx.regl({ context: { entityID: function entityID() {
47 return id;
48 } } });
49 return _possibleConstructorReturn(this, (Entity.__proto__ || Object.getPrototypeOf(Entity)).call(this, function (state, block) {
50 if ('function' == typeof state) {
51 block = state;state = {};
52 }
53 state = 'object' == (typeof state === 'undefined' ? 'undefined' : _typeof(state)) && state ? state : {};
54 block = 'function' == typeof block ? block : function () {};
55 injectContext(state, block);
56 }));
57 }
58
59 return Entity;
60}(_command.Command);
61//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2VudGl0eS5qcyJdLCJuYW1lcyI6WyJlbnRpdHlDb3VudCIsIkVudGl0eSIsImN0eCIsImlkIiwiaW5qZWN0Q29udGV4dCIsInJlZ2wiLCJjb250ZXh0IiwiZW50aXR5SUQiLCJzdGF0ZSIsImJsb2NrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7Ozs7O0FBVUEsSUFBSUEsY0FBYyxDQUFsQjs7SUFDYUMsTSxXQUFBQSxNOzs7Ozt5QkFDQztBQUFFLGFBQU8sRUFBR0QsV0FBVjtBQUF1Qjs7O0FBQ3JDLGtCQUFZRSxHQUFaLEVBQWlCO0FBQUE7O0FBQ2YsUUFBTUMsS0FBS0YsT0FBT0UsRUFBUCxFQUFYO0FBQ0EsUUFBTUMsZ0JBQWdCRixJQUFJRyxJQUFKLENBQVMsRUFBQ0MsU0FBUyxFQUFDQyxVQUFVO0FBQUEsaUJBQU1KLEVBQU47QUFBQSxTQUFYLEVBQVYsRUFBVCxDQUF0QjtBQUZlLDJHQUdULFVBQUNLLEtBQUQsRUFBUUMsS0FBUixFQUFrQjtBQUN0QixVQUFJLGNBQWMsT0FBT0QsS0FBekIsRUFBZ0M7QUFBRUMsZ0JBQVFELEtBQVIsQ0FBZUEsUUFBUSxFQUFSO0FBQVk7QUFDN0RBLGNBQVEsb0JBQW1CQSxLQUFuQix5Q0FBbUJBLEtBQW5CLE1BQTRCQSxLQUE1QixHQUFvQ0EsS0FBcEMsR0FBNEMsRUFBcEQ7QUFDQUMsY0FBUSxjQUFjLE9BQU9BLEtBQXJCLEdBQTZCQSxLQUE3QixHQUFxQyxZQUFXLENBQUUsQ0FBMUQ7QUFDQUwsb0JBQWNJLEtBQWQsRUFBcUJDLEtBQXJCO0FBQ0QsS0FSYztBQVNoQiIsImZpbGUiOiJlbnRpdHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kJ1xuXG4vKipcbiAqIEFuIEVudGl0eSBpcyBhIGNvbW1hbmQgdGhhdCBpbmplY3RzIGEgY29udGV4dCB3aXRoIGEgdW5pcXVlIElELiBTdGF0ZVxuICogaXMgbm90IHByZXNlcnZlZCwgYnV0IHJhdGhlciBqdXN0IHByb3ZpZGVkLiBUaGUgY3VycmVudCBhbmQgcHJldmlvdXMgc3RhdGVzXG4gKiBhcmUgY2FwdHVyZWQgYW5kIHByb3ZpZGVkIHRvIHRoZSBzY29wZSBibG9jayBmdW5jdGlvbiBnaXZlbiB0byB0aGUgaW50YW5jZVxuICogZW50aXR5IGZ1bmN0aW9uLiBUaGUgcHJldmlvdXMgc3RhdGUgaXMgZXhwb3NlZCBhcyBhIHByb3BlcnR5IG9uIHRoZSBjdXJyZW5cbiAqIHN0YXRlIG9iamVjdC4gQmFzaWNhbGx5LCB0aGlzIGNsYXNzIGp1c3QgY29uc3RydWN0cyBhIGNvbW1hbmQgZnVuY3Rpb25cbiAqIHRoYXQgYWNjZXB0cyBzb21lIGlucHV0LCBpbmplY3RzIGEgcmVnbCBjb250ZXh0LCBhbmQgcGFzc2VzIGl0IHRvIGFuIG9wdGlvbmFsXG4gKiBibG9jayBmdW5jdGlvbi4gVGhlIGNvbnRleHQganVzdCBkZWZpbmVzIGFuIGBlbnRpdHlJRGAgcHJvcGVydHkuIE1vc3RcbiAqIGNsYXNzZXMgaW5oZXJpdCBmcm9tIENvbXBvbmVudCwgd2hpY2ggaW5oZXJpdHMgRW50aXR5LlxuICovXG5sZXQgZW50aXR5Q291bnQgPSAwXG5leHBvcnQgY2xhc3MgRW50aXR5IGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBpZCgpIHsgcmV0dXJuICsrIGVudGl0eUNvdW50IH1cbiAgY29uc3RydWN0b3IoY3R4KSB7XG4gICAgY29uc3QgaWQgPSBFbnRpdHkuaWQoKVxuICAgIGNvbnN0IGluamVjdENvbnRleHQgPSBjdHgucmVnbCh7Y29udGV4dDoge2VudGl0eUlEOiAoKSA9PiBpZH19KVxuICAgIHN1cGVyKChzdGF0ZSwgYmxvY2spID0+IHtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBzdGF0ZSkgeyBibG9jayA9IHN0YXRlOyBzdGF0ZSA9IHt9IH1cbiAgICAgIHN0YXRlID0gJ29iamVjdCcgPT0gdHlwZW9mIHN0YXRlICYmIHN0YXRlID8gc3RhdGUgOiB7fVxuICAgICAgYmxvY2sgPSAnZnVuY3Rpb24nID09IHR5cGVvZiBibG9jayA/IGJsb2NrIDogZnVuY3Rpb24oKSB7fVxuICAgICAgaW5qZWN0Q29udGV4dChzdGF0ZSwgYmxvY2spXG4gICAgfSlcbiAgfVxufVxuIl19
\No newline at end of file