Files
JiboSDK/lib/animation-editor/controllers/scale-translate-controller.js

1 line
6.4 KiB
JavaScript
Raw Permalink Normal View History

2026-03-22 03:21:45 +02:00
"use strict";var e=function(){function e(e,t){for(var i in t){var s=t[i];s.configurable=!0,s.value&&(s.writable=!0)}Object.defineProperties(e,t)}return function(t,i,s){return i&&e(t.prototype,i),s&&e(t,s),t}}(),t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},i=require("animation-utilities"),s=i.THREE,o=i.MouseCoordinateWrangler,n=i.EyeKinematicsHelper,a=require("jibo-keyframes").conversion,r={LEFT:0,RIGHT:1,TOP:2,BOTTOM:3},h=function(){function i(e,s,o,a,r){var h=this;t(this,i),this.animationModel=a,this.renderer=e,this.element=s,this.robotInfo=o,this.spheres=[],this.scene=e.scene.getScene();var l=r?"overlay_textureSubRootBn":"eyeSubRootBn";this.rootBone=this.scene.getObjectByName(l),this.prefix=r?"overlay_vertexJoint":"vertexJoint",this.defaultVertexPositions=n.verticesForDOFValues(o.getDefaultDOFValues(),o),Object.keys(this.defaultVertexPositions).forEach(function(e){if(0===e.indexOf(h.prefix)&&e!==""+h.prefix+"5"){var t=h.defaultVertexPositions[e];h.createSphere(t,e)}}),this.scaleSpheres(),this.centerPosition=this.rootBone.position.clone(),this.defaultDistance=this.defaultVertexPositions[""+this.prefix+"6"].x-this.defaultVertexPositions[""+this.prefix+"5"].x,this.onMouseDownBind=this.onMouseDown.bind(this),this.onMouseUpBind=this.onMouseUp.bind(this),this.onScaleBind=this.onScale.bind(this),this.onTranslateBind=this.onTranslate.bind(this),this.element.addEventListener("mousedown",this.onMouseDownBind),this.element.addEventListener("mouseup",this.onMouseUpBind),this.startedManipulation=!1,this.indexToPosition={1:this.topLeft.bind(this),2:this.top.bind(this),3:this.topRight.bind(this),4:this.left.bind(this),6:this.right.bind(this),7:this.bottomLeft.bind(this),8:this.bottom.bind(this),9:this.bottomRight.bind(this)}}return e(i,{setIntersectedObject:{value:function(e){var t=this.renderer.scene.getScene(),i=this.renderer.scene.getCamera(),n=o.getLocalCoordinatesNDCCentered(e,this.element),a=new s.Raycaster;a.setFromCamera(n,i);for(var r=a.intersectObject(t,!0),h=0;h<r.length;h++){if(this.defaultVertexPositions[r[h].object.name])return this.sphere=r[h].object,void(this.mesh=void 0);this.mesh=r[h].object}}},getIntersectionAtHeight:{value:function(e,t,i){var o=new s.Vector3;o.set(e/this.element.clientWidth*2-1,2*-(t/this.element.clientHeight)+1,.5);var n=this.renderer.scene.getCamera();return o.unproject(n),o.z=i,o}},scaleSpheres:{value:function(){var e=this;this.spheres.forEach(function(t){t.scale.x=1/e.rootBone.scale.x,t.scale.y=1/e.rootBone.scale.y})}},_getDelta:{value:function(e,t){var i=this.rootBone.worldToLocal(e.clone());t===r.TOP||t===r.BOTTOM?i.x=0:i.y=0,e=this.rootBone.localToWorld(i);var s=t===r.TOP||t===r.RIGHT,o=s?e.sub(this.centerPosition).length():this.centerPosition.clone().sub(e).length();return o}},right:{value:function(e){var t=this._getDelta(e,r.RIGHT);this.animationModel.updateSelectedLayerPropertiesRelative({Scale:{x:t/this.defaultDistance,y:this.rootBone.scale.y}})}},left:{value:function(e){var t=this._getDelta(e,r.LEFT);this.animationModel.updateSelectedLayerPropertiesRelative({Scale:{x:t/this.defaultDistance,y:this.rootBone.scale.y}})}},top:{value:function(e){var t=this._getDelta(e,r.TOP);this.animationModel.updateSelectedLayerPropertiesRelative({Scale:{x:this.rootBone.scale.x,y:t/this.defaultDistance}})}},bottom:{value:function(e){var t=this._getDelta(e,r.BOTTOM);this.animationModel.updateSelectedLayerPropertiesRelative({Scale:{x:this.rootBone.scale.x,y:t/this.defaultDistance}})}},_uniformScale:{value:function(e,t){var i=e/this.defaultDistance,s=t/this.defaultDistance;e>t?s=i/this.rootBone.scale.x*this.rootBone.scale.y:i=s/this.rootBone.scale.y*this.rootBone.scale.x,this.animationModel.updateSelectedLayerPropertiesRelative({Scale:{x:i,y:s}})}},topLeft:{value:function(e,t){if(t){var i=this._getDelta(e,r.LEFT),s=this._getDelta(e,r.TOP);this._uniformScale(i,s)}else this.top(e),this.left(e)}},topRight:{value:function(e,t){if(t){var i=this._getDelta(e,r.RIGHT),s=this._getDelta(e,r.TOP);this._uniformScale(i,s)}else this.top(e),this.right(e)}},bottomLeft:{valu