pixi-game-camera
Version:
A flexible and non-opinionated way to add camera effects to your PIXI application via containers.
138 lines (108 loc) • 8.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Effect = void 0;
var _hypergiant = _interopRequireDefault(require("hypergiant"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
* A generic object that contains the properties and methods of all effects.
*/
var Effect = /*#__PURE__*/function () {
/**
* The container that the effect is happening on.
*
* @property {Container}
*/
/**
* The duration of thie effect.
*
* @private
*
* @property {number}
*
* @default 0
*/
/**
* A timestamp of when this effect was started.
*
* @property {DOMHighResTimeStamp}
*
* @default 0;
*/
/**
* A timestamp of when this effect was last run.
*
* @property {DOMHighResTimeStamp}
*
* @default 0
*/
/**
* A reference to the singal that is dispatched when this effect is finished.
*
* @property {Hypergiant}
*/
/**
* Indicates whether requestAnimationFrame is being used or not.
*
* @property {boolean}
*
* @default false
*/
/**
* A reference to the requestAnimationFrame id if RAF is being used.
*
* @property {number}
*/
/**
* @param {Container} container The container that the effect is happening on.
*/
function Effect(container) {
_classCallCheck(this, Effect);
_defineProperty(this, "container", void 0);
_defineProperty(this, "duration", 0);
_defineProperty(this, "started", 0);
_defineProperty(this, "current", 0);
_defineProperty(this, "finished", new _hypergiant["default"]());
_defineProperty(this, "useRAF", false);
_defineProperty(this, "id", void 0);
this.container = container;
this.started = performance.now();
}
/**
* Starts the requestAnimationFrame loop to use this effect if a Ticker is not provided.
*/
_createClass(Effect, [{
key: "start",
value: function start() {
var _this = this;
this.useRAF = true;
this.finished.add(function () {
return cancelAnimationFrame(_this.id);
});
this.update();
}
/**
* The default ease-linear easing function used if no easing function is provided.
*
* @param {number} t The percent we are currently through the animation.
*/
}, {
key: "easeLinear",
value: function easeLinear(t) {
return +t;
}
/**
* Updates the effect frame by frame.
*
* @param {number} [delta] The delta value passed by the game loop.
*/
}]);
return Effect;
}();
exports.Effect = Effect;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZmZlY3RzL2VmZmVjdC50cyJdLCJuYW1lcyI6WyJFZmZlY3QiLCJjb250YWluZXIiLCJIeXBlcmdpYW50Iiwic3RhcnRlZCIsInBlcmZvcm1hbmNlIiwibm93IiwidXNlUkFGIiwiZmluaXNoZWQiLCJhZGQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImlkIiwidXBkYXRlIiwidCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFHQTs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0lBQ3NCQSxNO0FBQ3BCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0U7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFHRTtBQUNGO0FBQ0E7QUFDRSxrQkFBWUMsU0FBWixFQUFrQztBQUFBOztBQUFBOztBQUFBLHNDQTlDdkIsQ0E4Q3VCOztBQUFBLHFDQXJDeEIsQ0FxQ3dCOztBQUFBLHFDQTVCeEIsQ0E0QndCOztBQUFBLHNDQXJCdkIsSUFBSUMsc0JBQUosRUFxQnVCOztBQUFBLG9DQVp6QixLQVl5Qjs7QUFBQTs7QUFDaEMsU0FBS0QsU0FBTCxHQUFpQkEsU0FBakI7QUFDQSxTQUFLRSxPQUFMLEdBQWVDLFdBQVcsQ0FBQ0MsR0FBWixFQUFmO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7Ozs7O1dBQ0UsaUJBQVE7QUFBQTs7QUFDTixXQUFLQyxNQUFMLEdBQWMsSUFBZDtBQUNBLFdBQUtDLFFBQUwsQ0FBY0MsR0FBZCxDQUFrQjtBQUFBLGVBQU1DLG9CQUFvQixDQUFDLEtBQUksQ0FBQ0MsRUFBTixDQUExQjtBQUFBLE9BQWxCO0FBRUEsV0FBS0MsTUFBTDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7OztXQUNFLG9CQUFXQyxDQUFYLEVBQXNCO0FBQ3BCLGFBQU8sQ0FBQ0EsQ0FBUjtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xyXG5cclxuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnQHBpeGkvZGlzcGxheSc7XHJcbmltcG9ydCBIeXBlcmdpYW50IGZyb20gJ2h5cGVyZ2lhbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgZ2VuZXJpYyBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiBhbGwgZWZmZWN0cy5cclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFZmZlY3Qge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBjb250YWluZXIgdGhhdCB0aGUgZWZmZWN0IGlzIGhhcHBlbmluZyBvbi5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0NvbnRhaW5lcn1cclxuICAgKi9cclxuICBjb250YWluZXI6IENvbnRhaW5lcjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoaWUgZWZmZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9XHJcbiAgICogXHJcbiAgICogQGRlZmF1bHQgMFxyXG4gICAqL1xyXG4gIGR1cmF0aW9uID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGlzIGVmZmVjdCB3YXMgc3RhcnRlZC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0RPTUhpZ2hSZXNUaW1lU3RhbXB9XHJcbiAgICogXHJcbiAgICogQGRlZmF1bHQgMDtcclxuICAgKi9cclxuICBzdGFydGVkID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGlzIGVmZmVjdCB3YXMgbGFzdCBydW4uXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtET01IaWdoUmVzVGltZVN0YW1wfVxyXG4gICAqIFxyXG4gICAqIEBkZWZhdWx0IDBcclxuICAgKi9cclxuICBjdXJyZW50ID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIHNpbmdhbCB0aGF0IGlzIGRpc3BhdGNoZWQgd2hlbiB0aGlzIGVmZmVjdCBpcyBmaW5pc2hlZC5cclxuICAgKiBcclxuICAgKiBAcHJvcGVydHkge0h5cGVyZ2lhbnR9XHJcbiAgICovXHJcbiAgZmluaXNoZWQgPSBuZXcgSHlwZXJnaWFudCgpO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgYmVpbmcgdXNlZCBvciBub3QuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtib29sZWFufVxyXG4gICAqIFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICovXHJcbiAgdXNlUkFGID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaWQgaWYgUkFGIGlzIGJlaW5nIHVzZWQuXHJcbiAgICogXHJcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IFxyXG4gICAqL1xyXG4gIGlkPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge0NvbnRhaW5lcn0gY29udGFpbmVyIFRoZSBjb250YWluZXIgdGhhdCB0aGUgZWZmZWN0IGlzIGhhcHBlbmluZyBvbi5cclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihjb250YWluZXI6IENvbnRhaW5lcikge1xyXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB0aGlzLnN0YXJ0ZWQgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0YXJ0cyB0aGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGxvb3AgdG8gdXNlIHRoaXMgZWZmZWN0IGlmIGEgVGlja2VyIGlzIG5vdCBwcm92aWRlZC5cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIHRoaXMudXNlUkFGID0gdHJ1ZTtcclxuICAgIHRoaXMuZmluaXNoZWQuYWRkKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuaWQhKSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBkZWZhdWx0IGVhc2UtbGluZWFyIGVhc2luZyBmdW5jdGlvbiB1c2VkIGlmIG5vIGVhc2luZyBmdW5jdGlvbiBpcyBwcm92aWRlZC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge251bWJlcn0gdCBUaGUgcGVyY2VudCB3ZSBhcmUgY3VycmVudGx5IHRocm91Z2ggdGhlIGFuaW1hdGlvbi5cclxuICAgKi9cclxuICBlYXNlTGluZWFyKHQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICt0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgZWZmZWN0IGZyYW1lIGJ5IGZyYW1lLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVsdGFdIFRoZSBkZWx0YSB2YWx1ZSBwYXNzZWQgYnkgdGhlIGdhbWUgbG9vcC5cclxuICAgKi9cclxuICBhYnN0cmFjdCB1cGRhdGUoZGVsdGE/OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBlZmZlY3QgaGFzIGJlZW4gYWNoaWV2ZWQuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgZWZmZWN0IGlzIGNvbXBsZXRlIG9yIGZhbHNlIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBhYnN0cmFjdCBjcml0ZXJpYU1ldD8oKTogYm9vbGVhbjtcclxufSJdfQ==