const PhSim = require(".");
// Try to import matter-js as a commonJS module
var Matter;
if(typeof window === "object") {
Matter = window.Matter;
}
else {
Matter = require("matter-js");
}
/*
Constraint types
*/
PhSim.Constraints = {
Static: {}
}
PhSim.Constraints.Static.Constraint = function() {
this.objectA = null;
this.objectB = null;
this.pointA = null;
this.pointB = null;
this.type = "constraint";
}
PhSim.prototype.getWidgetByName = function(nameStr) {
for(var i = 0; i < this.objUniverse.length; i++) {
this.objUniverse[i].getWidgetByName(nameStr);
}
}
PhSim.prototype.widgets = {};
/**
* Widget Object
* @param {Function} onextraction
*/
PhSim.Widget = function(onextraction) {
this.onextraction = onextraction;
}
/**
*
* @param {PhSimObject} o
*/
PhSim.Widget.defineByBoolean = function(o) {
Object.keys(PhSim.Widgets).forEach(function(p){
if(o[p]) {
o.type = p;
}
})
}
PhSim.Widget.WidgetOptions = function(type) {
this.type = type;
}
/**
* @typedef {WFunctionOptions|Object} WidgetOptions
* @property {String} type - Name of widget.
*/
/**
* Widget Namespace.
* @namespace
* @memberof PhSim
* @mixes PhSim.Game.Widgets
*/
PhSim.Widgets = {};
PhSim.Query.chkWidgetType = function() {
}
require("./widgets/circularConstraint.js");
require("./widgets/clone.js");
require("./widgets/draggable.js");
const Game = require("./game");
Object.assign(PhSim.Widgets,Game.Widgets);
require("./widgets/lock.js");
require("./widgets/motion.js");
require("./widgets/objLink.js");
require("./widgets/wFunction.js");
require("./widgets/elevator.js");
require("./widgets/keyboardControls.js");
require("./widgets/transformCameraByObj");
require("./widgets/setRenderProperties.js");
require("./widgets/deleteSelf.js");
require("./widgets/stack.js");
PhSim.Widgets.constraint = require("./widgets/constraint.js");
PhSim.Widgets.setImgSrc = require("./widgets/setImgSrc.js");
PhSim.Widgets.transformAgainstCamera = require("./widgets/transformAgainstCamera.js");
/**
* PlayAudio Widget
*
* @function
* @param {PhSim.DynObject} dyn_object
* @param {Object} widget
* @this PhSim
*/
PhSim.Widgets.playAudio = function(dyn_object,widget) {
var self = this;
var i = this.audioPlayers;
this.staticAudio.push(widget);
var f = function() {
self.playAudioByIndex(i);
}
this.createWFunction(dyn_object,f,widget);
this.audioPlayers++;
}
/**
* Make object not rotate
*
* @function
* @param {PhSim.DynObject} dyn_object
* @param {*} widget
*/
PhSim.Widgets.noRotation = function(dyn_object) {
Matter.Body.setInertia(dyn_object.matter, Infinity)
}