1 |
- {"ast":null,"code":"import { Logger } from \"../Misc/logger.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { Color3 } from \"../Maths/math.color.js\";\nimport { Gizmo } from \"./gizmo.js\";\nimport { PlaneRotationGizmo } from \"./planeRotationGizmo.js\";\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer.js\";\n/**\n * Gizmo that enables rotating a mesh along 3 axis\n */\nexport class RotationGizmo extends Gizmo {\n get attachedMesh() {\n return this._meshAttached;\n }\n set attachedMesh(mesh) {\n this._meshAttached = mesh;\n this._nodeAttached = mesh;\n this._checkBillboardTransform();\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n if (gizmo.isEnabled) {\n gizmo.attachedMesh = mesh;\n } else {\n gizmo.attachedMesh = null;\n }\n });\n }\n get attachedNode() {\n return this._nodeAttached;\n }\n set attachedNode(node) {\n this._meshAttached = null;\n this._nodeAttached = node;\n this._checkBillboardTransform();\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n if (gizmo.isEnabled) {\n gizmo.attachedNode = node;\n } else {\n gizmo.attachedNode = null;\n }\n });\n }\n _checkBillboardTransform() {\n if (this._nodeAttached && this._nodeAttached.billboardMode) {\n Logger.Log(\"Rotation Gizmo will not work with transforms in billboard mode.\");\n }\n }\n /**\n * Sensitivity factor for dragging (Default: 1)\n */\n set sensitivity(value) {\n this._sensitivity = value;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n if (gizmo) {\n gizmo.sensitivity = value;\n }\n });\n }\n get sensitivity() {\n return this._sensitivity;\n }\n /**\n * True when the mouse pointer is hovering a gizmo mesh\n */\n get isHovered() {\n return this.xGizmo.isHovered || this.yGizmo.isHovered || this.zGizmo.isHovered;\n }\n /**\n * True when the mouse pointer is dragging a gizmo mesh\n */\n get isDragging() {\n return this.xGizmo.dragBehavior.dragging || this.yGizmo.dragBehavior.dragging || this.zGizmo.dragBehavior.dragging;\n }\n get additionalTransformNode() {\n return this._additionalTransformNode;\n }\n set additionalTransformNode(transformNode) {\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n gizmo.additionalTransformNode = transformNode;\n });\n }\n /**\n * Creates a RotationGizmo\n * @param gizmoLayer The utility layer the gizmo will be added to\n * @param tessellation Amount of tessellation to be used when creating rotation circles\n * @param useEulerRotation Use and update Euler angle instead of quaternion\n * @param thickness display gizmo axis thickness\n * @param gizmoManager Gizmo manager\n * @param options More options\n */\n constructor(gizmoLayer = UtilityLayerRenderer.DefaultUtilityLayer, tessellation = 32, useEulerRotation = false, thickness = 1, gizmoManager, options) {\n super(gizmoLayer);\n /** Fires an event when any of it's sub gizmos are dragged */\n this.onDragStartObservable = new Observable();\n /** Fires an event when any of it's sub gizmos are being dragged */\n this.onDragObservable = new Observable();\n /** Fires an event when any of it's sub gizmos are released from dragging */\n this.onDragEndObservable = new Observable();\n this._observables = [];\n this._sensitivity = 1;\n /** Node Caching for quick lookup */\n this._gizmoAxisCache = new Map();\n const xColor = options && options.xOptions && options.xOptions.color ? options.xOptions.color : Color3.Red().scale(0.5);\n const yColor = options && options.yOptions && options.yOptions.color ? options.yOptions.color : Color3.Green().scale(0.5);\n const zColor = options && options.zOptions && options.zOptions.color ? options.zOptions.color : Color3.Blue().scale(0.5);\n this.xGizmo = new PlaneRotationGizmo(new Vector3(1, 0, 0), xColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.yGizmo = new PlaneRotationGizmo(new Vector3(0, 1, 0), yColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.zGizmo = new PlaneRotationGizmo(new Vector3(0, 0, 1), zColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.additionalTransformNode = options === null || options === void 0 ? void 0 : options.additionalTransformNode;\n // Relay drag events and set update scale\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n //must set updateScale on each gizmo, as setting it on root RotationGizmo doesnt prevent individual gizmos from updating\n //currently updateScale is a property with no getter/setter, so no good way to override behavior at runtime, so we will at least set it on startup\n if (options && options.updateScale != undefined) {\n gizmo.updateScale = options.updateScale;\n }\n gizmo.dragBehavior.onDragStartObservable.add(() => {\n this.onDragStartObservable.notifyObservers({});\n });\n gizmo.dragBehavior.onDragObservable.add(() => {\n this.onDragObservable.notifyObservers({});\n });\n gizmo.dragBehavior.onDragEndObservable.add(() => {\n this.onDragEndObservable.notifyObservers({});\n });\n });\n this.attachedMesh = null;\n this.attachedNode = null;\n if (gizmoManager) {\n gizmoManager.addToAxisCache(this._gizmoAxisCache);\n } else {\n // Only subscribe to pointer event if gizmoManager isnt\n Gizmo.GizmoAxisPointerObserver(gizmoLayer, this._gizmoAxisCache);\n }\n }\n /**\n * If set the gizmo's rotation will be updated to match the attached mesh each frame (Default: true)\n * NOTE: This is only possible for meshes with uniform scaling, as otherwise it's not possible to decompose the rotation\n */\n set updateGizmoRotationToMatchAttachedMesh(value) {\n if (this.xGizmo) {\n this.xGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n this.yGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n this.zGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n }\n }\n get updateGizmoRotationToMatchAttachedMesh() {\n return this.xGizmo.updateGizmoRotationToMatchAttachedMesh;\n }\n set updateGizmoPositionToMatchAttachedMesh(value) {\n if (this.xGizmo) {\n this.xGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n this.yGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n this.zGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n }\n }\n get updateGizmoPositionToMatchAttachedMesh() {\n return this.xGizmo.updateGizmoPositionToMatchAttachedMesh;\n }\n set anchorPoint(value) {\n this._anchorPoint = value;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n gizmo.anchorPoint = value;\n });\n }\n get anchorPoint() {\n return this._anchorPoint;\n }\n /**\n * Set the coordinate system to use. By default it's local.\n * But it's possible for a user to tweak so its local for translation and world for rotation.\n * In that case, setting the coordinate system will change `updateGizmoRotationToMatchAttachedMesh` and `updateGizmoPositionToMatchAttachedMesh`\n */\n set coordinatesMode(coordinatesMode) {\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n gizmo.coordinatesMode = coordinatesMode;\n });\n }\n set updateScale(value) {\n if (this.xGizmo) {\n this.xGizmo.updateScale = value;\n this.yGizmo.updateScale = value;\n this.zGizmo.updateScale = value;\n }\n }\n get updateScale() {\n return this.xGizmo.updateScale;\n }\n /**\n * Drag distance in babylon units that the gizmo will snap to when dragged (Default: 0)\n */\n set snapDistance(value) {\n if (this.xGizmo) {\n this.xGizmo.snapDistance = value;\n this.yGizmo.snapDistance = value;\n this.zGizmo.snapDistance = value;\n }\n }\n get snapDistance() {\n return this.xGizmo.snapDistance;\n }\n /**\n * Ratio for the scale of the gizmo (Default: 1)\n */\n set scaleRatio(value) {\n if (this.xGizmo) {\n this.xGizmo.scaleRatio = value;\n this.yGizmo.scaleRatio = value;\n this.zGizmo.scaleRatio = value;\n }\n }\n get scaleRatio() {\n return this.xGizmo.scaleRatio;\n }\n /**\n * posture that the gizmo will be display\n * When set null, default value will be used (Quaternion(0, 0, 0, 1))\n */\n get customRotationQuaternion() {\n return this._customRotationQuaternion;\n }\n set customRotationQuaternion(customRotationQuaternion) {\n this._customRotationQuaternion = customRotationQuaternion;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach(gizmo => {\n if (gizmo) {\n gizmo.customRotationQuaternion = customRotationQuaternion;\n }\n });\n }\n /**\n * Builds Gizmo Axis Cache to enable features such as hover state preservation and graying out other axis during manipulation\n * @param mesh Axis gizmo mesh\n * @param cache Gizmo axis definition used for reactive gizmo UI\n */\n addToAxisCache(mesh, cache) {\n this._gizmoAxisCache.set(mesh, cache);\n }\n /**\n * Force release the drag action by code\n */\n releaseDrag() {\n this.xGizmo.dragBehavior.releaseDrag();\n this.yGizmo.dragBehavior.releaseDrag();\n this.zGizmo.dragBehavior.releaseDrag();\n }\n /**\n * Disposes of the gizmo\n */\n dispose() {\n this.xGizmo.dispose();\n this.yGizmo.dispose();\n this.zGizmo.dispose();\n this.onDragStartObservable.clear();\n this.onDragObservable.clear();\n this.onDragEndObservable.clear();\n this._observables.forEach(obs => {\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(obs);\n });\n super.dispose();\n }\n /**\n * CustomMeshes are not supported by this gizmo\n */\n setCustomMesh() {\n Logger.Error(\"Custom meshes are not supported on this gizmo, please set the custom meshes on the gizmos contained within this one (gizmo.xGizmo, gizmo.yGizmo, gizmo.zGizmo)\");\n }\n}","map":{"version":3,"names":["Logger","Observable","Vector3","Color3","Gizmo","PlaneRotationGizmo","UtilityLayerRenderer","RotationGizmo","attachedMesh","_meshAttached","mesh","_nodeAttached","_checkBillboardTransform","xGizmo","yGizmo","zGizmo","forEach","gizmo","isEnabled","attachedNode","node","billboardMode","Log","sensitivity","value","_sensitivity","isHovered","isDragging","dragBehavior","dragging","additionalTransformNode","_additionalTransformNode","transformNode","constructor","gizmoLayer","DefaultUtilityLayer","tessellation","useEulerRotation","thickness","gizmoManager","options","onDragStartObservable","onDragObservable","onDragEndObservable","_observables","_gizmoAxisCache","Map","xColor","xOptions","color","Red","scale","yColor","yOptions","Green","zColor","zOptions","Blue","updateScale","undefined","add","notifyObservers","addToAxisCache","GizmoAxisPointerObserver","updateGizmoRotationToMatchAttachedMesh","updateGizmoPositionToMatchAttachedMesh","anchorPoint","_anchorPoint","coordinatesMode","snapDistance","scaleRatio","customRotationQuaternion","_customRotationQuaternion","cache","set","releaseDrag","dispose","clear","obs","utilityLayerScene","onPointerObservable","remove","setCustomMesh","Error"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Gizmos/rotationGizmo.js"],"sourcesContent":["import { Logger } from \"../Misc/logger.js\";\nimport { Observable } from \"../Misc/observable.js\";\nimport { Vector3 } from \"../Maths/math.vector.js\";\nimport { Color3 } from \"../Maths/math.color.js\";\nimport { Gizmo } from \"./gizmo.js\";\nimport { PlaneRotationGizmo } from \"./planeRotationGizmo.js\";\nimport { UtilityLayerRenderer } from \"../Rendering/utilityLayerRenderer.js\";\n/**\n * Gizmo that enables rotating a mesh along 3 axis\n */\nexport class RotationGizmo extends Gizmo {\n get attachedMesh() {\n return this._meshAttached;\n }\n set attachedMesh(mesh) {\n this._meshAttached = mesh;\n this._nodeAttached = mesh;\n this._checkBillboardTransform();\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n if (gizmo.isEnabled) {\n gizmo.attachedMesh = mesh;\n }\n else {\n gizmo.attachedMesh = null;\n }\n });\n }\n get attachedNode() {\n return this._nodeAttached;\n }\n set attachedNode(node) {\n this._meshAttached = null;\n this._nodeAttached = node;\n this._checkBillboardTransform();\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n if (gizmo.isEnabled) {\n gizmo.attachedNode = node;\n }\n else {\n gizmo.attachedNode = null;\n }\n });\n }\n _checkBillboardTransform() {\n if (this._nodeAttached && this._nodeAttached.billboardMode) {\n Logger.Log(\"Rotation Gizmo will not work with transforms in billboard mode.\");\n }\n }\n /**\n * Sensitivity factor for dragging (Default: 1)\n */\n set sensitivity(value) {\n this._sensitivity = value;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n if (gizmo) {\n gizmo.sensitivity = value;\n }\n });\n }\n get sensitivity() {\n return this._sensitivity;\n }\n /**\n * True when the mouse pointer is hovering a gizmo mesh\n */\n get isHovered() {\n return this.xGizmo.isHovered || this.yGizmo.isHovered || this.zGizmo.isHovered;\n }\n /**\n * True when the mouse pointer is dragging a gizmo mesh\n */\n get isDragging() {\n return this.xGizmo.dragBehavior.dragging || this.yGizmo.dragBehavior.dragging || this.zGizmo.dragBehavior.dragging;\n }\n get additionalTransformNode() {\n return this._additionalTransformNode;\n }\n set additionalTransformNode(transformNode) {\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n gizmo.additionalTransformNode = transformNode;\n });\n }\n /**\n * Creates a RotationGizmo\n * @param gizmoLayer The utility layer the gizmo will be added to\n * @param tessellation Amount of tessellation to be used when creating rotation circles\n * @param useEulerRotation Use and update Euler angle instead of quaternion\n * @param thickness display gizmo axis thickness\n * @param gizmoManager Gizmo manager\n * @param options More options\n */\n constructor(gizmoLayer = UtilityLayerRenderer.DefaultUtilityLayer, tessellation = 32, useEulerRotation = false, thickness = 1, gizmoManager, options) {\n super(gizmoLayer);\n /** Fires an event when any of it's sub gizmos are dragged */\n this.onDragStartObservable = new Observable();\n /** Fires an event when any of it's sub gizmos are being dragged */\n this.onDragObservable = new Observable();\n /** Fires an event when any of it's sub gizmos are released from dragging */\n this.onDragEndObservable = new Observable();\n this._observables = [];\n this._sensitivity = 1;\n /** Node Caching for quick lookup */\n this._gizmoAxisCache = new Map();\n const xColor = options && options.xOptions && options.xOptions.color ? options.xOptions.color : Color3.Red().scale(0.5);\n const yColor = options && options.yOptions && options.yOptions.color ? options.yOptions.color : Color3.Green().scale(0.5);\n const zColor = options && options.zOptions && options.zOptions.color ? options.zOptions.color : Color3.Blue().scale(0.5);\n this.xGizmo = new PlaneRotationGizmo(new Vector3(1, 0, 0), xColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.yGizmo = new PlaneRotationGizmo(new Vector3(0, 1, 0), yColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.zGizmo = new PlaneRotationGizmo(new Vector3(0, 0, 1), zColor, gizmoLayer, tessellation, this, useEulerRotation, thickness);\n this.additionalTransformNode = options?.additionalTransformNode;\n // Relay drag events and set update scale\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n //must set updateScale on each gizmo, as setting it on root RotationGizmo doesnt prevent individual gizmos from updating\n //currently updateScale is a property with no getter/setter, so no good way to override behavior at runtime, so we will at least set it on startup\n if (options && options.updateScale != undefined) {\n gizmo.updateScale = options.updateScale;\n }\n gizmo.dragBehavior.onDragStartObservable.add(() => {\n this.onDragStartObservable.notifyObservers({});\n });\n gizmo.dragBehavior.onDragObservable.add(() => {\n this.onDragObservable.notifyObservers({});\n });\n gizmo.dragBehavior.onDragEndObservable.add(() => {\n this.onDragEndObservable.notifyObservers({});\n });\n });\n this.attachedMesh = null;\n this.attachedNode = null;\n if (gizmoManager) {\n gizmoManager.addToAxisCache(this._gizmoAxisCache);\n }\n else {\n // Only subscribe to pointer event if gizmoManager isnt\n Gizmo.GizmoAxisPointerObserver(gizmoLayer, this._gizmoAxisCache);\n }\n }\n /**\n * If set the gizmo's rotation will be updated to match the attached mesh each frame (Default: true)\n * NOTE: This is only possible for meshes with uniform scaling, as otherwise it's not possible to decompose the rotation\n */\n set updateGizmoRotationToMatchAttachedMesh(value) {\n if (this.xGizmo) {\n this.xGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n this.yGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n this.zGizmo.updateGizmoRotationToMatchAttachedMesh = value;\n }\n }\n get updateGizmoRotationToMatchAttachedMesh() {\n return this.xGizmo.updateGizmoRotationToMatchAttachedMesh;\n }\n set updateGizmoPositionToMatchAttachedMesh(value) {\n if (this.xGizmo) {\n this.xGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n this.yGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n this.zGizmo.updateGizmoPositionToMatchAttachedMesh = value;\n }\n }\n get updateGizmoPositionToMatchAttachedMesh() {\n return this.xGizmo.updateGizmoPositionToMatchAttachedMesh;\n }\n set anchorPoint(value) {\n this._anchorPoint = value;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n gizmo.anchorPoint = value;\n });\n }\n get anchorPoint() {\n return this._anchorPoint;\n }\n /**\n * Set the coordinate system to use. By default it's local.\n * But it's possible for a user to tweak so its local for translation and world for rotation.\n * In that case, setting the coordinate system will change `updateGizmoRotationToMatchAttachedMesh` and `updateGizmoPositionToMatchAttachedMesh`\n */\n set coordinatesMode(coordinatesMode) {\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n gizmo.coordinatesMode = coordinatesMode;\n });\n }\n set updateScale(value) {\n if (this.xGizmo) {\n this.xGizmo.updateScale = value;\n this.yGizmo.updateScale = value;\n this.zGizmo.updateScale = value;\n }\n }\n get updateScale() {\n return this.xGizmo.updateScale;\n }\n /**\n * Drag distance in babylon units that the gizmo will snap to when dragged (Default: 0)\n */\n set snapDistance(value) {\n if (this.xGizmo) {\n this.xGizmo.snapDistance = value;\n this.yGizmo.snapDistance = value;\n this.zGizmo.snapDistance = value;\n }\n }\n get snapDistance() {\n return this.xGizmo.snapDistance;\n }\n /**\n * Ratio for the scale of the gizmo (Default: 1)\n */\n set scaleRatio(value) {\n if (this.xGizmo) {\n this.xGizmo.scaleRatio = value;\n this.yGizmo.scaleRatio = value;\n this.zGizmo.scaleRatio = value;\n }\n }\n get scaleRatio() {\n return this.xGizmo.scaleRatio;\n }\n /**\n * posture that the gizmo will be display\n * When set null, default value will be used (Quaternion(0, 0, 0, 1))\n */\n get customRotationQuaternion() {\n return this._customRotationQuaternion;\n }\n set customRotationQuaternion(customRotationQuaternion) {\n this._customRotationQuaternion = customRotationQuaternion;\n [this.xGizmo, this.yGizmo, this.zGizmo].forEach((gizmo) => {\n if (gizmo) {\n gizmo.customRotationQuaternion = customRotationQuaternion;\n }\n });\n }\n /**\n * Builds Gizmo Axis Cache to enable features such as hover state preservation and graying out other axis during manipulation\n * @param mesh Axis gizmo mesh\n * @param cache Gizmo axis definition used for reactive gizmo UI\n */\n addToAxisCache(mesh, cache) {\n this._gizmoAxisCache.set(mesh, cache);\n }\n /**\n * Force release the drag action by code\n */\n releaseDrag() {\n this.xGizmo.dragBehavior.releaseDrag();\n this.yGizmo.dragBehavior.releaseDrag();\n this.zGizmo.dragBehavior.releaseDrag();\n }\n /**\n * Disposes of the gizmo\n */\n dispose() {\n this.xGizmo.dispose();\n this.yGizmo.dispose();\n this.zGizmo.dispose();\n this.onDragStartObservable.clear();\n this.onDragObservable.clear();\n this.onDragEndObservable.clear();\n this._observables.forEach((obs) => {\n this.gizmoLayer.utilityLayerScene.onPointerObservable.remove(obs);\n });\n super.dispose();\n }\n /**\n * CustomMeshes are not supported by this gizmo\n */\n setCustomMesh() {\n Logger.Error(\"Custom meshes are not supported on this gizmo, please set the custom meshes on the gizmos contained within this one (gizmo.xGizmo, gizmo.yGizmo, gizmo.zGizmo)\");\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|