-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Labels
enhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomershacktoberfestthis issue is listed under hacktoberfest and is up for grabsthis issue is listed under hacktoberfest and is up for grabs
Description
Goal
To help developers understand how camera movement affects the scene, print the camera’s position and direction every few seconds. This is useful for debugging and tuning camera movement, FPS controls, and scene composition.
Overview
- Add a timer in the scene’s
update()method. - Every
nseconds, print camera information to the console. - Use the camera's
PositionandFrontvectors to display its current location and orientation. - Make it easy to adjust the print interval.
Implementation Steps
1️⃣ Add Timer in Scene
File: scenes/test.cpp
#include <iostream>
#include "scenes/test.h"
#include "core/Camera.h"
class TestScene {
float printInterval = 2.0f; // seconds
float timeSinceLastPrint = 0.0f;
Camera* camera;
public:
TestScene(Camera* cam) : camera(cam) {}
void update(float deltaTime) {
timeSinceLastPrint += deltaTime;
if (timeSinceLastPrint >= printInterval) {
PrintCameraInfo();
timeSinceLastPrint = 0.0f;
}
// Existing scene update logic...
}
void PrintCameraInfo() {
glm::vec3 pos = camera->Position;
glm::vec3 dir = camera->Front;
std::cout << "Camera Position: (" << pos.x << ", " << pos.y << ", " << pos.z << ")" << std::endl;
std::cout << "Camera Direction: (" << dir.x << ", " << dir.y << ", " << dir.z << ")" << std::endl;
std::cout << "----------------------------" << std::endl;
}
};printIntervalcontrols how often the print occurs.timeSinceLastPrintaccumulates delta time between updates.PrintCameraInfo()prints the camera’sPositionandFrontvectors.
2️⃣ Update Scene Loop
Make sure your main update loop passes deltaTime:
float currentFrame = static_cast<float>(glfwGetTime());
float deltaTime = currentFrame - lastFrame;
lastFrame = currentFrame;
scene->update(deltaTime);This ensures timeSinceLastPrint increments correctly.
3️⃣ Optional: Toggle Printing On/Off
You can add a key to enable or disable the printout:
bool printCameraEnabled = true;
input->BindKeyEvent(GLFW_KEY_P, GLFW_RELEASE, [&]() {
printCameraEnabled = !printCameraEnabled;
});
// In update()
if (printCameraEnabled && timeSinceLastPrint >= printInterval) {
PrintCameraInfo();
timeSinceLastPrint = 0.0f;
}4️⃣ Output Example
Camera Position: (0.0, 0.0, 3.0)
Camera Direction: (0.0, 0.0, -1.0)
----------------------------
Camera Position: (0.1, 0.0, 2.95)
Camera Direction: (0.0, 0.1, -0.99)
----------------------------
- Shows how the camera moves and rotates in the scene.
- Helps debug FPS-style camera movement or automated camera paths.
📂 Files to Modify
scenes/test.cppincludes/helpers/camera.h(if you want to add helper getters for Position and Front)
🎯 Outcome
- Camera position and direction are logged every few seconds.
- Developers can track how camera movement affects rendering.
- Easy to toggle printing for debugging or performance.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomershacktoberfestthis issue is listed under hacktoberfest and is up for grabsthis issue is listed under hacktoberfest and is up for grabs