mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 12:37:51 +02:00
grabHockey.js can also rotate objects again
This commit is contained in:
parent
b60907570a
commit
fbd1b7e8b0
1 changed files with 10 additions and 13 deletions
|
@ -31,7 +31,7 @@ var tablePosition = {
|
||||||
var isGrabbing = false;
|
var isGrabbing = false;
|
||||||
var isGrabbingPaddle = false;
|
var isGrabbingPaddle = false;
|
||||||
var grabbedEntity = null;
|
var grabbedEntity = null;
|
||||||
var prevMouse = {};
|
var prevMouse = {x: 0, y: 0};
|
||||||
var deltaMouse = {
|
var deltaMouse = {
|
||||||
z: 0
|
z: 0
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ var moveUpDown = false;
|
||||||
var CLOSE_ENOUGH = 0.001;
|
var CLOSE_ENOUGH = 0.001;
|
||||||
var FULL_STRENGTH = 1.0;
|
var FULL_STRENGTH = 1.0;
|
||||||
var SPRING_TIMESCALE = 0.05;
|
var SPRING_TIMESCALE = 0.05;
|
||||||
|
var ANGULAR_SPRING_TIMESCALE = 0.03;
|
||||||
var DAMPING_RATE = 0.80;
|
var DAMPING_RATE = 0.80;
|
||||||
var ANGULAR_DAMPING_RATE = 0.40;
|
var ANGULAR_DAMPING_RATE = 0.40;
|
||||||
var SCREEN_TO_METERS = 0.001;
|
var SCREEN_TO_METERS = 0.001;
|
||||||
|
@ -59,7 +60,7 @@ var originalGravity = {
|
||||||
z: 0
|
z: 0
|
||||||
};
|
};
|
||||||
var shouldRotate = false;
|
var shouldRotate = false;
|
||||||
var dQ, theta, axisAngle, dT;
|
var dQ, dT;
|
||||||
var angularVelocity = {
|
var angularVelocity = {
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
|
@ -266,24 +267,20 @@ function mouseMoveEvent(event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldRotate) {
|
if (shouldRotate) {
|
||||||
|
targetPosition = currentPosition;
|
||||||
deltaMouse.x = event.x - prevMouse.x;
|
deltaMouse.x = event.x - prevMouse.x;
|
||||||
if (!moveUpDown) {
|
deltaMouse.z = event.y - prevMouse.y;
|
||||||
deltaMouse.z = event.y - prevMouse.y;
|
deltaMouse.y = 0;
|
||||||
deltaMouse.y = 0;
|
|
||||||
} else {
|
|
||||||
deltaMouse.y = (event.y - prevMouse.y) * -1;
|
|
||||||
deltaMouse.z = 0;
|
|
||||||
}
|
|
||||||
var transformedDeltaMouse = {
|
var transformedDeltaMouse = {
|
||||||
x: deltaMouse.z,
|
x: deltaMouse.z,
|
||||||
y: deltaMouse.x,
|
y: deltaMouse.x,
|
||||||
z: deltaMouse.y
|
z: deltaMouse.y
|
||||||
};
|
};
|
||||||
transformedDeltaMouse = Vec3.multiplyQbyV(Quat.fromPitchYawRollDegrees(0, camYaw, 0), transformedDeltaMouse);
|
|
||||||
dQ = Quat.fromVec3Degrees(transformedDeltaMouse);
|
dQ = Quat.fromVec3Degrees(transformedDeltaMouse);
|
||||||
theta = 2 * Math.acos(dQ.w);
|
var theta = 2 * Math.acos(dQ.w);
|
||||||
axisAngle = Quat.axis(dQ);
|
var axis = Quat.axis(dQ);
|
||||||
angularVelocity = Vec3.multiply((theta / dT), axisAngle);
|
angularVelocity = Vec3.multiply((theta / ANGULAR_SPRING_TIMESCALE), axis);
|
||||||
} else {
|
} else {
|
||||||
if (moveUpDown) {
|
if (moveUpDown) {
|
||||||
targetPosition = forwardPickRayIntersection(currentPosition, event.x, event.y);
|
targetPosition = forwardPickRayIntersection(currentPosition, event.x, event.y);
|
||||||
|
|
Loading…
Reference in a new issue