|
@@ -408,8 +408,8 @@ module BABYLON {
|
|
|
rotateSpheres[index].position.addInPlace(new BABYLON.Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));
|
|
|
rotateSpheres[index].lookAt(Vector3.Cross(Vector3.Forward(), rotateSpheres[index].position.normalizeToNew()).normalizeToNew().add(rotateSpheres[index].position));
|
|
|
}
|
|
|
- if (this.fixedDragMeshScreenSize) {
|
|
|
- rotateSpheres[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera!.position, this._tmpVector);
|
|
|
+ if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {
|
|
|
+ rotateSpheres[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
|
|
|
var distanceFromCamera = this.rotationSphereSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;
|
|
|
rotateSpheres[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
|
|
|
} else {
|
|
@@ -429,8 +429,8 @@ module BABYLON {
|
|
|
if (scaleBoxes[index]) {
|
|
|
scaleBoxes[index].position.set(this._boundingDimensions.x * i, this._boundingDimensions.y * j, this._boundingDimensions.z * k);
|
|
|
scaleBoxes[index].position.addInPlace(new BABYLON.Vector3(-this._boundingDimensions.x / 2, -this._boundingDimensions.y / 2, -this._boundingDimensions.z / 2));
|
|
|
- if (this.fixedDragMeshScreenSize) {
|
|
|
- scaleBoxes[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera!.position, this._tmpVector);
|
|
|
+ if (this.fixedDragMeshScreenSize && this.gizmoLayer.utilityLayerScene.activeCamera) {
|
|
|
+ scaleBoxes[index].absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
|
|
|
var distanceFromCamera = this.scaleBoxSize * this._tmpVector.length() / this.fixedDragMeshScreenSizeDistanceFactor;
|
|
|
scaleBoxes[index].scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
|
|
|
} else {
|
|
@@ -497,15 +497,6 @@ module BABYLON {
|
|
|
var box = BABYLON.MeshBuilder.CreateBox("box", { size: 1 }, mesh.getScene());
|
|
|
var boundingMinMax = mesh.getHierarchyBoundingVectors();
|
|
|
boundingMinMax.max.subtractToRef(boundingMinMax.min, box.scaling);
|
|
|
- box.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);
|
|
|
-
|
|
|
- // Restore original positions
|
|
|
- mesh.addChild(box);
|
|
|
- mesh.rotationQuaternion.copyFrom(oldRot);
|
|
|
- mesh.position.copyFrom(oldPos);
|
|
|
-
|
|
|
- // Reverse parenting
|
|
|
- mesh.removeChild(box);
|
|
|
|
|
|
// Adjust scale to avoid undefined behavior when adding child
|
|
|
if (box.scaling.y === 0) {
|
|
@@ -518,6 +509,16 @@ module BABYLON {
|
|
|
box.scaling.z = BABYLON.Epsilon;
|
|
|
}
|
|
|
|
|
|
+ box.position.set((boundingMinMax.max.x + boundingMinMax.min.x) / 2, (boundingMinMax.max.y + boundingMinMax.min.y) / 2, (boundingMinMax.max.z + boundingMinMax.min.z) / 2);
|
|
|
+
|
|
|
+ // Restore original positions
|
|
|
+ mesh.addChild(box);
|
|
|
+ mesh.rotationQuaternion.copyFrom(oldRot);
|
|
|
+ mesh.position.copyFrom(oldPos);
|
|
|
+
|
|
|
+ // Reverse parenting
|
|
|
+ mesh.removeChild(box);
|
|
|
+
|
|
|
box.addChild(mesh);
|
|
|
box.visibility = 0;
|
|
|
return box;
|