85 lines
1.7 KiB
JavaScript
85 lines
1.7 KiB
JavaScript
"use strict";
|
|
|
|
var utils = require("./utils")
|
|
, Scene = function () {
|
|
}
|
|
;
|
|
|
|
module.exports.create = function () {
|
|
var scene
|
|
, arg
|
|
;
|
|
|
|
if (arguments.length == 0) {
|
|
scene = new Scene();
|
|
} else {
|
|
arg = arguments[0];
|
|
|
|
if (arg instanceof Scene) {
|
|
scene = arg;
|
|
} else {
|
|
scene = new Scene();
|
|
|
|
// try to populate the new scene using any values that match scene properties
|
|
if (arg.name) {
|
|
scene.withName(arg.name);
|
|
}
|
|
|
|
if (arg.lights) {
|
|
scene.withLights(arg.lights);
|
|
}
|
|
|
|
if (arg.transitionTime) {
|
|
scene.withTransitionTime(arg.transitionTime);
|
|
}
|
|
|
|
if (arg.data || arg.appData) {
|
|
scene.withAppData(arg.data || arg.appData);
|
|
}
|
|
|
|
if (arg.picture) {
|
|
scene.withPicture(arg.picture);
|
|
}
|
|
}
|
|
}
|
|
return scene;
|
|
};
|
|
|
|
|
|
Scene.prototype.withName = function(name) {
|
|
utils.combine(this, {name: utils.getStringValue(name, 32)});
|
|
return this;
|
|
};
|
|
|
|
Scene.prototype.withLights = function(lightIds) {
|
|
var ids;
|
|
|
|
if (Array.isArray(lightIds)) {
|
|
ids = lightIds;
|
|
} else {
|
|
ids = Array.prototype.slice.call(arguments);
|
|
}
|
|
|
|
utils.combine(this, {lights: utils.createStringValueArray(ids)});
|
|
return this;
|
|
};
|
|
|
|
Scene.prototype.withTransitionTime = function(milliseconds) {
|
|
utils.combine(this, {transitiontime: milliseconds});
|
|
return this;
|
|
};
|
|
|
|
Scene.prototype.withAppData = function(data) {
|
|
utils.combine(this, {appdata: {data: data, version: 1}});
|
|
return this;
|
|
};
|
|
|
|
Scene.prototype.withPicture = function(picture) {
|
|
utils.combine(this, {picture: picture});
|
|
return this;
|
|
};
|
|
|
|
Scene.prototype.withRecycle = function(recycle) {
|
|
utils.combine(this, {"recycle": recycle});
|
|
return this;
|
|
}; |