/** * FrictionContactMaterial Runtime * @param physics GameLib.D3.Graphics * @param apiFrictionContactMaterial GameLib.D3.API.FrictionContactMaterial * @constructor */ GameLib.D3.FrictionContactMaterial = function ( physics, apiFrictionContactMaterial ) { this.physics = physics; this.physics.isNotCannonThrow(); if (GameLib.Utils.UndefinedOrNull(apiFrictionContactMaterial)) { apiFrictionContactMaterial = {}; } if (apiFrictionContactMaterial instanceof GameLib.D3.FrictionContactMaterial) { return apiFrictionContactMaterial; } GameLib.D3.API.FrictionContactMaterial.call( this, apiFrictionContactMaterial.id, apiFrictionContactMaterial.name, apiFrictionContactMaterial.material1, apiFrictionContactMaterial.material2, apiFrictionContactMaterial.friction, apiFrictionContactMaterial.restitution, apiFrictionContactMaterial.contactEquationStiffness, apiFrictionContactMaterial.contactEquationRelaxation, apiFrictionContactMaterial.frictionEquationStiffness, apiFrictionContactMaterial.frictionEquationRelaxation, apiFrictionContactMaterial.parentEntity ); GameLib.Component.call( this, GameLib.Component.COMPONENT_FRICTION_CONTACT_MATERIAL, { material1 : GameLib.D3.FrictionMaterial, material2 : GameLib.D3.FrictionMaterial } ); }; GameLib.D3.FrictionContactMaterial.prototype = Object.create(GameLib.D3.API.FrictionContactMaterial.prototype); GameLib.D3.FrictionContactMaterial.prototype.constructor = GameLib.D3.FrictionContactMaterial; /** * * @returns {*} */ GameLib.D3.FrictionContactMaterial.prototype.createInstance = function() { var instance = new CANNON.ContactMaterial( this.material1.instance, this.material2.instance, { friction: this.friction, restitution: this.restitution, contactEquationStiffness: this.contactEquationStiffness } ); return instance; }; /** * */ GameLib.D3.FrictionContactMaterial.prototype.updateInstance = function() { this.instance.material1 = this.material1.instance; this.instance.material2 = this.material2.instance; this.instance.friction = this.friction; this.instance.restitution = this.restitution; this.instance.contactEquationStiffness = this.contactEquationStiffness; this.instance.contactEquationRelaxation = this.contactEquationRelaxation; this.instance.frictionEquationStiffness = this.frictionEquationStiffness; this.instance.frictionEquationRelaxation = this.frictionEquationRelaxation; }; /** * GameLib.D3.FrictionContactMaterial to GameLib.D3.API.FrictionContactMaterial * @returns {GameLib.D3.API.FrictionContactMaterial} */ GameLib.D3.FrictionContactMaterial.prototype.toApiObject = function() { var apiFrictionContactMaterial = new GameLib.D3.API.FrictionContactMaterial( this.id, this.name, GameLib.Utils.IdOrNull(this.material1), GameLib.Utils.IdOrNull(this.material2), this.friction, this.restitution, this.contactEquationStiffness, this.contactEquationRelaxation, this.frictionEquationStiffness, this.frictionEquationRelaxation, GameLib.Utils.IdOrNull(this.parentEntity) ); return apiFrictionContactMaterial; }; /** * GameLib.D3.FrictionContactMaterial from Object FrictionContactMaterial * @param physics * @param objectComponent * @returns {GameLib.D3.FrictionContactMaterial} * @constructor */ GameLib.D3.FrictionContactMaterial.FromObject = function(physics, objectComponent) { var apiFrictionContactMaterial = GameLib.D3.API.FrictionContactMaterial.FromObject(objectComponent); return new GameLib.D3.FrictionContactMaterial( physics, apiFrictionContactMaterial ); };