Mouse look works properly when stationary
This commit is contained in:
parent
a262b60def
commit
0908a39aa5
@ -35,15 +35,15 @@ struct Transform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
glm::vec3 forward() {
|
glm::vec3 forward() {
|
||||||
return matrix * glm::vec4(0.0, 0.0, -1.0, 1.0);
|
return matrix * glm::vec4(0.0, 0.0, -1.0, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
glm::vec3 up() {
|
glm::vec3 up() {
|
||||||
return matrix * glm::vec4(0.0, 1.0, 0.0, 1.0);
|
return matrix * glm::vec4(0.0, 1.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
glm::vec3 right() {
|
glm::vec3 right() {
|
||||||
return matrix * glm::vec4(1.0, 0.0, 0.0, 1.0);
|
return matrix * glm::vec4(1.0, 0.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -56,7 +56,11 @@ public:
|
|||||||
glm::vec3 cameraUp = glm::vec3(0.0, 1.0, 0.0);
|
glm::vec3 cameraUp = glm::vec3(0.0, 1.0, 0.0);
|
||||||
glm::vec3 cameraRight = glm::cross(cameraFront, cameraUp);
|
glm::vec3 cameraRight = glm::cross(cameraFront, cameraUp);
|
||||||
|
|
||||||
camera->view = glm::lookAt(cameraOrigin, cameraOrigin + cameraFront, cameraUp);
|
glm::mat4x4 lookAt = glm::lookAt(cameraOrigin, cameraOrigin + cameraFront, cameraUp);
|
||||||
|
|
||||||
|
lookAt[3] = glm::vec4(cameraOrigin, 1.0);
|
||||||
|
|
||||||
|
transform->matrix = lookAt;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ public:
|
|||||||
shader.use();
|
shader.use();
|
||||||
|
|
||||||
shader.setMat4("projection", camera->projection);
|
shader.setMat4("projection", camera->projection);
|
||||||
shader.setMat4("view", camera->view);
|
shader.setMat4("view", cameraTransform->matrix);
|
||||||
|
|
||||||
pWorld->each<Mesh, Transform>([&](Entity *ent, ComponentHandle<Mesh> mesh, ComponentHandle<Transform> transform) {
|
pWorld->each<Mesh, Transform>([&](Entity *ent, ComponentHandle<Mesh> mesh, ComponentHandle<Transform> transform) {
|
||||||
shader.setMat4("model", transform->matrix);
|
shader.setMat4("model", transform->matrix);
|
||||||
|
47
main.cpp
47
main.cpp
@ -125,6 +125,53 @@ int main() {
|
|||||||
});
|
});
|
||||||
box->get<Transform>()->translate(glm::vec3(0.0f, 0.0f, -5.0f));
|
box->get<Transform>()->translate(glm::vec3(0.0f, 0.0f, -5.0f));
|
||||||
|
|
||||||
|
Entity *box2 = world->create();
|
||||||
|
box2->assign<Transform>();
|
||||||
|
box2->assign<Mesh>(std::vector<float>{
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
|
||||||
|
0.5f, -0.5f, -0.5f, 1.0f, 0.0f,
|
||||||
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f,
|
||||||
|
|
||||||
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 1.0f,
|
||||||
|
-0.5f, 0.5f, 0.5f, 0.0f, 1.0f,
|
||||||
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
|
||||||
|
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
-0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
0.5f, -0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
|
||||||
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
|
||||||
|
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
|
||||||
|
-0.5f, 0.5f, 0.5f, 0.0f, 0.0f,
|
||||||
|
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f
|
||||||
|
});
|
||||||
|
box2->get<Transform>()->translate(glm::vec3(5.0f, 0.0f, 0.0f));
|
||||||
|
|
||||||
Shader defaultShader("Shaders/default-vertex.vs", "Shaders/default-fragment.fs");
|
Shader defaultShader("Shaders/default-vertex.vs", "Shaders/default-fragment.fs");
|
||||||
|
|
||||||
double timeInLastFrame = glfwGetTime();
|
double timeInLastFrame = glfwGetTime();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user