Quick little way to spawn in some popcorns. Hit M.

This commit is contained in:
Zed A. Shaw 2026-08-27 14:41:36 -04:00
parent d03afb31e1
commit 748528a31f
3 changed files with 17 additions and 5 deletions

View file

@ -16,13 +16,13 @@ void framebuffer_size_callback(GLFWwindow *, int width, int height) {
}
void mouse_callback(GLFWwindow *window, double xpos, double ypos) {
Camera* camera = static_cast<Camera*>(glfwGetWindowUserPointer(window));
camera->mouse_move(xpos, ypos);
Scene* scene = static_cast<Scene*>(glfwGetWindowUserPointer(window));
scene->camera.mouse_move(xpos, ypos);
}
void scroll_callback(GLFWwindow *window, double xoffset, double yoffset) {
Camera* camera = static_cast<Camera*>(glfwGetWindowUserPointer(window));
camera->mouse_scroll(xoffset, yoffset);
Scene* scene = static_cast<Scene*>(glfwGetWindowUserPointer(window));
scene->camera.mouse_scroll(xoffset, yoffset);
}
GLFWwindow* create_window() {
@ -65,6 +65,10 @@ void process_input(GLFWwindow *window, Scene& scene) {
scene.camera.right();
}
if(glfwGetKey(window, GLFW_KEY_M) == GLFW_PRESS) {
scene.spawn("popcorn", scene.camera.position);
}
if(glfwGetKey(window, GLFW_KEY_L) == GLFW_PRESS) {
for(auto& light : scene.light.directional) {
light.adjust(-0.01f);
@ -109,7 +113,7 @@ int main() {
auto window = create_window();
auto scene = setup();
glfwSetWindowUserPointer(window, &scene.camera);
glfwSetWindowUserPointer(window, &scene);
while(!glfwWindowShouldClose(window)) {
update(window, scene);

View file

@ -57,3 +57,10 @@ void Scene::render(GLFWwindow* window) {
void Scene::cleanup() {
shader.cleanup();
}
void Scene::spawn(const std::string& name, components::Position& position) {
things.emplace_back(
models.at(name),
position,
materials.at(name));
}

View file

@ -60,4 +60,5 @@ struct Scene {
void draw_model(Model& scene_model, Material& material, glm::mat4& projection, glm::mat4& view, glm::vec3& position);
void render(GLFWwindow* window);
void cleanup();
void spawn(const std::string& name, components::Position& position);
};