const PhSim = require(".."); /** * * Extract Widgets from Dynamic Object. * To extract a widget in PhSim is to read all of the objects in the "widgets" array found in each * well-formed PhSim object and then translate it into JavaScript. * * @function * @param {WidgetOptions} widget - The Widget * @param {PhSim.DynObject} dyn_object The individual Dynamic Object * @returns undefined * */ PhSim.prototype.extractWidget = function(dyn_object,widget) { if(PhSim.Widgets[widget.type]) { PhSim.Widgets[widget.type].call(this,dyn_object,widget); } if(widget.name) { this.widgets[widget.name] = widget; } var self = this; if(widget.changeSl) { var closure = function() { var i = widget.slIndex; var f = function() { self.gotoSimulationIndex(i) } return f; } this.createWFunction(widget.trigger,closure(),{ ...widget, wFunctionObj: dyn_object }); } if(widget.transformWithCamera) { this.camera.transformingObjects.push(dyn_object) } } /** * Extract all widgets from a dynamic object. * @param {PhSim.DynObject} dyn_object */ PhSim.prototype.extractWidgets = function(dyn_object) { for(var i = 0; i < dyn_object.widgets.length; i++) { this.extractWidget(dyn_object,dyn_object.widgets[i]); } }