arcade-physics
Version:
Use Arcade Physics without Phaser.
82 lines • 2.76 kB
JavaScript
;
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2020 Photon Storm Ltd.
* @license {@link https://opensource.org/licenses/MIT|MIT License}
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const IsPlainObject_1 = __importDefault(require("./IsPlainObject"));
// @param {boolean} deep - Perform a deep copy?
// @param {object} target - The target object to copy to.
// @return {object} The extended object.
/**
* This is a slightly modified version of http://api.jquery.com/jQuery.extend/
*
* @function Phaser.Utils.Objects.Extend
* @since 3.0.0
*
* @param {...*} [args] - The objects that will be mixed.
*
* @return {object} The extended object.
*/
const Extend = function () {
let options;
let name;
let src;
let copy;
let copyIsArray;
let clone;
let target = arguments[0] || {};
let i = 1;
const length = arguments.length;
let deep = false;
// Handle a deep copy situation
if (typeof target === 'boolean') {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
// extend Phaser if only one argument is passed
if (length === i) {
target = this;
--i;
}
for (; i < length; i++) {
// Only deal with non-null/undefined values
if ((options = arguments[i]) != null) {
// Extend the base object
for (name in options) {
src = target[name];
copy = options[name];
// Prevent never-ending loop
if (target === copy) {
continue;
}
// Recurse if we're merging plain objects or arrays
if (deep && copy && ((0, IsPlainObject_1.default)(copy) || (copyIsArray = Array.isArray(copy)))) {
if (copyIsArray) {
copyIsArray = false;
clone = src && Array.isArray(src) ? src : [];
}
else {
clone = src && (0, IsPlainObject_1.default)(src) ? src : {};
}
// Never move original objects, clone them
target[name] = Extend(deep, clone, copy);
// Don't bring in undefined values
}
else if (copy !== undefined) {
target[name] = copy;
}
}
}
}
// Return the modified object
return target;
};
exports.default = Extend;
//# sourceMappingURL=Extend.js.map