Browse Source

Improvement for camera 3d moving (#2340)

codeClimate
linuxnotes 8 years ago
committed by Alexander Wunschik
parent
commit
769415ea3a
1 changed files with 14 additions and 5 deletions
  1. +14
    -5
      lib/graph3d/Graph3d.js

+ 14
- 5
lib/graph3d/Graph3d.js View File

@ -1910,6 +1910,8 @@ Graph3d.prototype._onMouseDown = function(event) {
// get mouse position (different code for IE and all other browsers) // get mouse position (different code for IE and all other browsers)
this.startMouseX = getMouseX(event); this.startMouseX = getMouseX(event);
this.startMouseY = getMouseY(event); this.startMouseY = getMouseY(event);
this._startCameraOffset = this.camera.getOffset();
this.startStart = new Date(this.start); this.startStart = new Date(this.start);
this.startEnd = new Date(this.end); this.startEnd = new Date(this.end);
@ -1936,21 +1938,28 @@ Graph3d.prototype._onMouseDown = function(event) {
*/ */
Graph3d.prototype._onMouseMove = function (event) { Graph3d.prototype._onMouseMove = function (event) {
event = event || window.event; event = event || window.event;
// move with ctrl or rotate by other // move with ctrl or rotate by other
if (event && event.ctrlKey === true) { if (event && event.ctrlKey === true) {
// calculate change in mouse position // calculate change in mouse position
var camera = this.camera, var camera = this.camera,
offset = camera.getOffset(); offset = camera.getOffset();
var diffX = parseFloat(getMouseX(event)) - this.startMouseX; var diffX = parseFloat(getMouseX(event)) - this.startMouseX;
var diffY = parseFloat(getMouseY(event)) - this.startMouseY; var diffY = parseFloat(getMouseY(event)) - this.startMouseY;
var scale = this.frame.clientWidth * 0.6;
var offXNew = offset.x - ((diffX / scale) * this.camera.armLength) * 0.1;
var offYNew = offset.y + ((diffY / scale) * this.camera.armLength) * 0.1;
var scaleX = this.frame.clientWidth * 0.5;
var scaleY = this.frame.clientHeight * 0.5;
var offXNew = (this._startCameraOffset.x || 0) - ((diffX / scaleX) * this.camera.armLength) * 0.8;
var offYNew = (this._startCameraOffset.y || 0) + ((diffY / scaleY) * this.camera.armLength) * 0.8;
this.camera.setOffset(offXNew, offYNew); this.camera.setOffset(offXNew, offYNew);
// меняем startX, startY и startOffset
this._startCameraOffset = this.camera.getOffset();
this.startMouseX = getMouseX(event);
this.startMouseY = getMouseY(event);
} else { } else {
// calculate change in mouse position // calculate change in mouse position

Loading…
Cancel
Save