diff --git a/src/data/local_storage.js b/src/data/local_storage.js index 9289c6c6ef..3051e677e5 100644 --- a/src/data/local_storage.js +++ b/src/data/local_storage.js @@ -22,7 +22,7 @@ import p5 from '../core/main'; * @method storeItem * @for p5 * @param {String} key - * @param {String|Number|Object|Boolean|p5.Color} value + * @param {String|Number|Object|Boolean|p5.Color|p5.Vector} value * * @example *
@@ -71,6 +71,10 @@ p5.prototype.storeItem = (key, value) => { case 'object': if (value instanceof p5.Color) { type = 'p5.Color'; + } else if (value instanceof p5.Vector) { + type = 'p5.Vector'; + const coord = [value.x, value.y, value.z]; + value = coord; } value = JSON.stringify(value); break; @@ -92,7 +96,7 @@ p5.prototype.storeItem = (key, value) => { * @method getItem * @for p5 * @param {String} key name that you wish to use to store in local storage - * @return {Number|Object|String|Boolean|p5.Color} Value of stored item + * @return {Number|Object|String|Boolean|p5.Color|p5.Vector} Value of stored item * * @example *
@@ -149,6 +153,10 @@ p5.prototype.getItem = function(key) { value = JSON.parse(value); value = this.color(...value.levels); break; + case 'p5.Vector': + value = JSON.parse(value); + value = this.createVector(...value); + break; case 'string': default: break; diff --git a/test/unit/data/local_storage.js b/test/unit/data/local_storage.js index 028ce0a8b1..9ba6e42b02 100644 --- a/test/unit/data/local_storage.js +++ b/test/unit/data/local_storage.js @@ -5,6 +5,7 @@ suite('local storage', function() { var myNumber = 46; var myString = 'coolio'; var myColor; + var myVector; var hardCodedTypeID = 'p5TypeID'; @@ -13,11 +14,13 @@ suite('local storage', function() { p.setup = function() { myp5 = p; myColor = myp5.color(40, 100, 70); + myVector = myp5.createVector(10, 20, 30); myp5.storeItem('myBoolean', myBoolean); myp5.storeItem('myObject', myObject); myp5.storeItem('myNumber', myNumber); myp5.storeItem('myString', myString); myp5.storeItem('myColor', myColor); + myp5.storeItem('myVector', myVector); done(); }; }); @@ -66,6 +69,9 @@ suite('local storage', function() { test('p5 Color should retrieve as p5 Color', function() { assert.isTrue(myp5.getItem('myColor') instanceof p5.Color); }); + test('p5 Vector should retrieve as p5 Vector', function() { + assert.isTrue(myp5.getItem('myVector') instanceof p5.Vector); + }); }); var checkRemoval = function(key) { @@ -94,5 +100,9 @@ suite('local storage', function() { test('color should be removable', function() { checkRemoval('myColor'); }); + + test('vector should be removable', function() { + checkRemoval('myVector'); + }); }); });