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');
+ });
});
});