Apply rotations in the correct order
This commit is contained in:
parent
7ac961ea42
commit
6f03ed7295
@ -27,8 +27,11 @@ void Transform::Translate(cfloat x, cfloat y, cfloat z) {
|
|||||||
Vector3 Transform::Forward() {
|
Vector3 Transform::Forward() {
|
||||||
Vector3 forward(0.0f, 0.0f, -1.0f);
|
Vector3 forward(0.0f, 0.0f, -1.0f);
|
||||||
Matrix mat(1.0f);
|
Matrix mat(1.0f);
|
||||||
mat = glm::rotate(mat, this->rotation.x, Vector3(1.0f, 0.0f, 0.0f));
|
|
||||||
mat = glm::rotate(mat, this->rotation.y, Vector3(0.0f, 1.0f, 0.0f));
|
|
||||||
mat = glm::rotate(mat, this->rotation.z, Vector3(0.0f, 0.0f, 1.0f));
|
mat = glm::rotate(mat, this->rotation.z, Vector3(0.0f, 0.0f, 1.0f));
|
||||||
return mat * glm::vec4(forward, 1.0f);
|
mat = glm::rotate(mat, this->rotation.y, Vector3(0.0f, 1.0f, 0.0f));
|
||||||
|
mat = glm::rotate(mat, this->rotation.x, Vector3(1.0f, 0.0f, 0.0f));
|
||||||
|
|
||||||
|
|
||||||
|
return glm::vec3(mat * glm::vec4(forward, 1.0f));
|
||||||
}
|
}
|
||||||
|
@ -61,6 +61,9 @@ end
|
|||||||
|
|
||||||
function update(delta)
|
function update(delta)
|
||||||
local cam_forwards = camera.transform:Forward()
|
local cam_forwards = camera.transform:Forward()
|
||||||
|
local cam_rotation = camera.transform.rotation
|
||||||
|
print (cam_forwards.x, cam_forwards.y, cam_forwards.z)
|
||||||
|
print (cam_rotation.x, cam_rotation.y, cam_rotation.z)
|
||||||
|
|
||||||
local move_vec = couch.Vector3()
|
local move_vec = couch.Vector3()
|
||||||
move_vec = camera.transform.position + cam_forwards * delta * vz * SPEED
|
move_vec = camera.transform.position + cam_forwards * delta * vz * SPEED
|
||||||
@ -69,7 +72,7 @@ function update(delta)
|
|||||||
camera.transform.rotation.y = camera.transform.rotation.y - cam_rot_x * delta
|
camera.transform.rotation.y = camera.transform.rotation.y - cam_rot_x * delta
|
||||||
cam_rot_x = 0.0
|
cam_rot_x = 0.0
|
||||||
camera.transform.rotation.x = camera.transform.rotation.x - cam_rot_y * delta
|
camera.transform.rotation.x = camera.transform.rotation.x - cam_rot_y * delta
|
||||||
camera.transform.rotation.x = min(max(camera.transform.rotation.x, -3.14), 3.14)
|
camera.transform.rotation.x = min(max(camera.transform.rotation.x, -3.14 / 2.0), 3.14 / 2.0)
|
||||||
cam_rot_y = 0.0
|
cam_rot_y = 0.0
|
||||||
|
|
||||||
local loc = ball1.transform.position
|
local loc = ball1.transform.position
|
||||||
@ -81,8 +84,6 @@ function update(delta)
|
|||||||
ball1.transform.position.y = ball1.transform.position.y + ballvy * delta
|
ball1.transform.position.y = ball1.transform.position.y + ballvy * delta
|
||||||
|
|
||||||
ball.transform.rotation.z = ball.transform.rotation.z + 1.0 * delta;
|
ball.transform.rotation.z = ball.transform.rotation.z + 1.0 * delta;
|
||||||
ball.transform.rotation.y = ball.transform.rotation.y + 1.0 * delta;
|
|
||||||
ball.transform.rotation.x = ball.transform.rotation.x + 1.0 * delta;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function onkey(key, code, action, mod)
|
function onkey(key, code, action, mod)
|
||||||
|
Loading…
Reference in New Issue
Block a user