Comparing version 2.1.0 to 2.2.0
@@ -18,2 +18,8 @@ 'use strict'; | ||
//node imports | ||
// const { SortedArraySet, FastSet } = require('collections'); | ||
var FastSet = require('collections/fast-set.js'), | ||
SortedSet = require('collections/sorted-array-set.js'); | ||
var EventEmitter = require('events'); | ||
//user imports | ||
@@ -32,10 +38,12 @@ var RandomStringGenerator = require('./utils/RandomStringGenerator.js'); | ||
//node inmports | ||
var EventEmitter = require('events'); | ||
/** | ||
* @description - Set intersection taken from Mozilla | ||
* @description - Special reducer for action ADD_ENTITY | ||
* @param {Object} action - the action received by the manager | ||
* @param {Manager} manager - the manager itself | ||
*/ | ||
Set.prototype.intersection = function (setB) { | ||
var intersection = new Set(); | ||
function addEntityReducer(action, manager) { | ||
if (!action.components) { | ||
throw "'" + action.type + "' must specify components to add to the entity!"; | ||
} | ||
var entity = new Entity(manager); | ||
var _iteratorNormalCompletion = true; | ||
@@ -46,8 +54,6 @@ var _didIteratorError = false; | ||
try { | ||
for (var _iterator = setB[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var elem = _step.value; | ||
for (var _iterator = action.components[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var component = _step.value; | ||
if (this.has(elem)) { | ||
intersection.add(elem); | ||
} | ||
entity.addComponent(component); | ||
} | ||
@@ -69,40 +75,2 @@ } catch (err) { | ||
return intersection; | ||
}; | ||
/** | ||
* @description - Special reducer for action ADD_ENTITY | ||
* @param {Object} action - the action received by the manager | ||
* @param {Manager} manager - the manager itself | ||
*/ | ||
function addEntityReducer(action, manager) { | ||
if (!action.components) { | ||
throw "'" + action.type + "' must specify components to add to the entity!"; | ||
} | ||
var entity = new Entity(manager); | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator2 = action.components[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var component = _step2.value; | ||
entity.addComponent(component); | ||
} | ||
} catch (err) { | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
} | ||
} | ||
manager.addEntity(entity); | ||
@@ -145,3 +113,3 @@ } | ||
*/ | ||
this._hashes = new Set(); | ||
this._hashes = new FastSet(); | ||
} | ||
@@ -260,3 +228,3 @@ | ||
if (!(componentName in this._entitiesByComponent)) { | ||
this._entitiesByComponent[componentName] = new Set(); | ||
this._entitiesByComponent[componentName] = new FastSet(); | ||
} | ||
@@ -305,3 +273,3 @@ this._entitiesByComponent[componentName].add(entity.hash()); | ||
this._entitiesByComponent[componentName].delete(hash); | ||
if (this._entitiesByComponent[componentName].size <= 0) { | ||
if (this._entitiesByComponent[componentName].length <= 0) { | ||
delete this._entitiesByComponent[componentName]; | ||
@@ -334,3 +302,3 @@ } | ||
this._entitiesByComponent[componentName].delete(hash); | ||
if (this._entitiesByComponent[componentName].size <= 0) { | ||
if (this._entitiesByComponent[componentName].length <= 0) { | ||
delete this._entitiesByComponent[componentName]; | ||
@@ -349,3 +317,3 @@ } | ||
value: function _addToComponentList(componentName, hash) { | ||
if (!(componentName in this._entitiesByComponent)) this._entitiesByComponent[componentName] = new Set(); | ||
if (!(componentName in this._entitiesByComponent)) this._entitiesByComponent[componentName] = new FastSet(); | ||
@@ -385,9 +353,9 @@ this._entitiesByComponent[componentName].add(hash); | ||
var _iteratorNormalCompletion3 = true; | ||
var _didIteratorError3 = false; | ||
var _iteratorError3 = undefined; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator3 = types[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | ||
var type = _step3.value; | ||
for (var _iterator2 = types[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var type = _step2.value; | ||
@@ -400,12 +368,12 @@ if (!(type in this._reducers)) { | ||
} catch (err) { | ||
_didIteratorError3 = true; | ||
_iteratorError3 = err; | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion3 && _iterator3.return) { | ||
_iterator3.return(); | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError3) { | ||
throw _iteratorError3; | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
@@ -446,9 +414,9 @@ } | ||
value: function _removeReducerFromTypes(reducer, types) { | ||
var _iteratorNormalCompletion4 = true; | ||
var _didIteratorError4 = false; | ||
var _iteratorError4 = undefined; | ||
var _iteratorNormalCompletion3 = true; | ||
var _didIteratorError3 = false; | ||
var _iteratorError3 = undefined; | ||
try { | ||
for (var _iterator4 = types[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { | ||
var type = _step4.value; | ||
for (var _iterator3 = types[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { | ||
var type = _step3.value; | ||
@@ -458,12 +426,12 @@ this._removeReducerFromList(reducer, this._reducers[type], type); | ||
} catch (err) { | ||
_didIteratorError4 = true; | ||
_iteratorError4 = err; | ||
_didIteratorError3 = true; | ||
_iteratorError3 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion4 && _iterator4.return) { | ||
_iterator4.return(); | ||
if (!_iteratorNormalCompletion3 && _iterator3.return) { | ||
_iterator3.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError4) { | ||
throw _iteratorError4; | ||
if (_didIteratorError3) { | ||
throw _iteratorError3; | ||
} | ||
@@ -536,9 +504,9 @@ } | ||
if (!this._reducers[action.type]) return; | ||
var _iteratorNormalCompletion5 = true; | ||
var _didIteratorError5 = false; | ||
var _iteratorError5 = undefined; | ||
var _iteratorNormalCompletion4 = true; | ||
var _didIteratorError4 = false; | ||
var _iteratorError4 = undefined; | ||
try { | ||
for (var _iterator5 = this._reducers[action.type][Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { | ||
var fun = _step5.value; | ||
for (var _iterator4 = this._reducers[action.type][Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { | ||
var fun = _step4.value; | ||
@@ -548,12 +516,12 @@ fun(action, this); | ||
} catch (err) { | ||
_didIteratorError5 = true; | ||
_iteratorError5 = err; | ||
_didIteratorError4 = true; | ||
_iteratorError4 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion5 && _iterator5.return) { | ||
_iterator5.return(); | ||
if (!_iteratorNormalCompletion4 && _iterator4.return) { | ||
_iterator4.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError5) { | ||
throw _iteratorError5; | ||
if (_didIteratorError4) { | ||
throw _iteratorError4; | ||
} | ||
@@ -648,9 +616,9 @@ } | ||
var shouldInvalidate = true; | ||
var _iteratorNormalCompletion6 = true; | ||
var _didIteratorError6 = false; | ||
var _iteratorError6 = undefined; | ||
var _iteratorNormalCompletion5 = true; | ||
var _didIteratorError5 = false; | ||
var _iteratorError5 = undefined; | ||
try { | ||
for (var _iterator6 = this._processors[processorName].getComponentNames()[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { | ||
var componentName = _step6.value; | ||
for (var _iterator5 = this._processors[processorName].getComponentNames()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { | ||
var componentName = _step5.value; | ||
@@ -663,12 +631,12 @@ if (!(componentName in components)) { | ||
} catch (err) { | ||
_didIteratorError6 = true; | ||
_iteratorError6 = err; | ||
_didIteratorError5 = true; | ||
_iteratorError5 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion6 && _iterator6.return) { | ||
_iterator6.return(); | ||
if (!_iteratorNormalCompletion5 && _iterator5.return) { | ||
_iterator5.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError6) { | ||
throw _iteratorError6; | ||
if (_didIteratorError5) { | ||
throw _iteratorError5; | ||
} | ||
@@ -683,2 +651,33 @@ } | ||
/** | ||
* @description - Allows entities to be sorted in the | ||
* cached list that is given to a processor | ||
* @param {String} processorName - the name of the processor | ||
* to be sorted | ||
* @param {Function} equal - determines if two items are equal, should | ||
* nearly always compare entityHash values | ||
* @param {Function} compare - comparator function for the sorting | ||
*/ | ||
}, { | ||
key: 'addSorterForProcessorList', | ||
value: function addSorterForProcessorList(processorName, equal, compare) { | ||
if (!this._processorsCachedEntityLists[processorName]) { | ||
this._processorsCachedEntityLists[processorName] = { | ||
'invalid': true, | ||
'set': new SortedSet([], equal, compare), | ||
'isSorted': true, | ||
'equal': equal, | ||
'compare': compare | ||
}; | ||
} else { | ||
Object.assign(this._processorsCachedEntityLists[processorName], { | ||
'invalid': true, | ||
'set': new SortedSet(this._processorsCachedEntityLists[processorName].set.toArray(), equal, compare), | ||
'equal': equal, | ||
'compare': compare | ||
}); | ||
} | ||
} | ||
/** | ||
* @description - typically called whenever an entity has deleted a | ||
@@ -695,3 +694,3 @@ * component, it needs to invalidate any processor list that depended | ||
for (var processorName in this._processors) { | ||
if (this._processors[processorName].getComponentNames().has(component) && this._processorsCachedEntityLists[processorName].set.has(entityHash)) { | ||
if (this._processors[processorName].getComponentNames().has(component) && this._processorsCachedEntityLists[processorName] && this._processorsCachedEntityLists[processorName].set.has(entityHash)) { | ||
this._processorsCachedEntityLists[processorName].invalid = true; | ||
@@ -716,12 +715,13 @@ } | ||
} | ||
this._processorsCachedEntityLists[processorName].invalid = false; | ||
var cachedListObject = this._processorsCachedEntityLists[processorName]; | ||
cachedListObject.invalid = false; | ||
var set = new Set(Object.keys(this._entitiesByHash)); | ||
var _iteratorNormalCompletion7 = true; | ||
var _didIteratorError7 = false; | ||
var _iteratorError7 = undefined; | ||
var set = cachedListObject.isSorted ? new SortedSet(Object.keys(this._entitiesByHash), cachedListObject.equal, cachedListObject.compare) : new FastSet(Object.keys(this._entitiesByHash)); | ||
var _iteratorNormalCompletion6 = true; | ||
var _didIteratorError6 = false; | ||
var _iteratorError6 = undefined; | ||
try { | ||
for (var _iterator7 = componentSet[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { | ||
var component = _step7.value; | ||
for (var _iterator6 = componentSet[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { | ||
var component = _step6.value; | ||
@@ -732,3 +732,3 @@ /* none of the entities in the manager have a required component of the | ||
if (!this.hasComponent(component)) { | ||
this._processorsCachedEntityLists[processorName].set = new Set(); | ||
cachedListObject.set = new FastSet(); | ||
return; | ||
@@ -739,12 +739,12 @@ } | ||
} catch (err) { | ||
_didIteratorError7 = true; | ||
_iteratorError7 = err; | ||
_didIteratorError6 = true; | ||
_iteratorError6 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion7 && _iterator7.return) { | ||
_iterator7.return(); | ||
if (!_iteratorNormalCompletion6 && _iterator6.return) { | ||
_iterator6.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError7) { | ||
throw _iteratorError7; | ||
if (_didIteratorError6) { | ||
throw _iteratorError6; | ||
} | ||
@@ -754,3 +754,3 @@ } | ||
this._processorsCachedEntityLists[processorName].set = set; | ||
cachedListObject.set = set; | ||
} | ||
@@ -832,9 +832,9 @@ | ||
value: function fromJSON(obj) { | ||
var _iteratorNormalCompletion8 = true; | ||
var _didIteratorError8 = false; | ||
var _iteratorError8 = undefined; | ||
var _iteratorNormalCompletion7 = true; | ||
var _didIteratorError7 = false; | ||
var _iteratorError7 = undefined; | ||
try { | ||
for (var _iterator8 = obj.entities[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { | ||
var entityObj = _step8.value; | ||
for (var _iterator7 = obj.entities[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { | ||
var entityObj = _step7.value; | ||
@@ -855,12 +855,12 @@ var hashValue = entityObj.hash; | ||
} catch (err) { | ||
_didIteratorError8 = true; | ||
_iteratorError8 = err; | ||
_didIteratorError7 = true; | ||
_iteratorError7 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion8 && _iterator8.return) { | ||
_iterator8.return(); | ||
if (!_iteratorNormalCompletion7 && _iterator7.return) { | ||
_iterator7.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError8) { | ||
throw _iteratorError8; | ||
if (_didIteratorError7) { | ||
throw _iteratorError7; | ||
} | ||
@@ -920,9 +920,9 @@ } | ||
entity._setHash(hash); | ||
var _iteratorNormalCompletion9 = true; | ||
var _didIteratorError9 = false; | ||
var _iteratorError9 = undefined; | ||
var _iteratorNormalCompletion8 = true; | ||
var _didIteratorError8 = false; | ||
var _iteratorError8 = undefined; | ||
try { | ||
for (var _iterator9 = componentList[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { | ||
var componentObject = _step9.value; | ||
for (var _iterator8 = componentList[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { | ||
var componentObject = _step8.value; | ||
@@ -940,12 +940,12 @@ if (componentObject.name in this._componentLibrary) { | ||
} catch (err) { | ||
_didIteratorError9 = true; | ||
_iteratorError9 = err; | ||
_didIteratorError8 = true; | ||
_iteratorError8 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion9 && _iterator9.return) { | ||
_iterator9.return(); | ||
if (!_iteratorNormalCompletion8 && _iterator8.return) { | ||
_iterator8.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError9) { | ||
throw _iteratorError9; | ||
if (_didIteratorError8) { | ||
throw _iteratorError8; | ||
} | ||
@@ -952,0 +952,0 @@ } |
{ | ||
"name": "sam-ecs", | ||
"version": "2.1.0", | ||
"version": "2.2.0", | ||
"description": "A specialized entity component system", | ||
@@ -21,3 +21,3 @@ "main": "./dist/index.js", | ||
}, | ||
"repo": { | ||
"repository": { | ||
"type": "git", | ||
@@ -37,3 +37,6 @@ "url": "https://github.com/therealsamf/Sam-ECS.git" | ||
"jest-cli": "^17.0.0" | ||
}, | ||
"dependencies": { | ||
"collections": "^5.0.5" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
44299
1099
0
1
+ Addedcollections@^5.0.5
+ Addedcollections@5.1.13(transitive)
+ Addedweak-map@1.0.8(transitive)