Compare commits
No commits in common. "940c1d706bc5330eead7116d5e006b994f92b707" and "e234dda860068e3d10a5da6ade1d9ec23cdbd41c" have entirely different histories.
940c1d706b
...
e234dda860
6 changed files with 363 additions and 374 deletions
16
World.cpp
16
World.cpp
|
@ -107,9 +107,6 @@ float World::castRay(float originX, float originY, float orientation) const
|
|||
* the grid for the other one
|
||||
* - Depending on the orientation, signs must be taken into account
|
||||
* to work 360°
|
||||
* - Those formulas consider regular axes (x→,y↑), however the world is
|
||||
* built around left-handed axes (x→,y↓), so the rendered world is
|
||||
* mirrored. This also explains some weird signs for rotations.
|
||||
*/
|
||||
/* Offsets to get back on the grid from the ray's origin. */
|
||||
float hOffsetX;
|
||||
|
@ -151,7 +148,7 @@ float World::castRay(float originX, float originY, float orientation) const
|
|||
if (orientation < 180) {
|
||||
vOffsetX = ceilf(originX);
|
||||
vOffsetY = ceilf(originX) - originX;
|
||||
vDir = 1;
|
||||
vDir = +1;
|
||||
vRound = 0;
|
||||
} else {
|
||||
vOffsetX = floorf(originX);
|
||||
|
@ -242,8 +239,6 @@ void World::render(sf::RenderWindow& window) const
|
|||
window.draw(ground);
|
||||
window.draw(ceiling);
|
||||
|
||||
const float worldToCamera = (player.focalLength*2)/player.sensorSize;
|
||||
|
||||
/*
|
||||
* Throw rays and draw walls over the ceiling and ground.
|
||||
* Only throws in the plane, which doesn't work for levels/3D.
|
||||
|
@ -257,7 +252,7 @@ void World::render(sf::RenderWindow& window) const
|
|||
} else if (rayAngle > 360) {
|
||||
rayAngle -= 360;
|
||||
}
|
||||
float obstacleScale = worldToCamera / castRay(player.x, player.y, rayAngle);
|
||||
float obstacleScale = player.focalLength*2/(castRay(player.x, player.y, rayAngle)*player.sensorSize);
|
||||
/* 2 Is wall height in meters. */
|
||||
fillColumn(window, i, obstacleScale);
|
||||
}
|
||||
|
@ -274,7 +269,7 @@ void World::step(const float& stepTime) {
|
|||
player.rotate(player.currentRotationSpeed*stepTime);
|
||||
|
||||
#ifdef IMGUI
|
||||
if (ImGui::Begin("MapEdit")) {
|
||||
ImGui::Begin("MapEdit");
|
||||
static int blockToPlace = 1;
|
||||
|
||||
/*
|
||||
|
@ -325,8 +320,7 @@ void World::step(const float& stepTime) {
|
|||
ImGui::PushStyleColor(ImGuiCol_Header, blockColor);
|
||||
|
||||
if(ImGui::Selectable("", currentBlock != BlockType::AIR, 0, ImVec2(10, 10))) {
|
||||
map[x + w * y] =
|
||||
currentBlock == (BlockType) blockToPlace ? BlockType::AIR : (BlockType) blockToPlace;
|
||||
map[x + w*y] = currentBlock == (BlockType)blockToPlace ? BlockType::AIR : (BlockType)blockToPlace;
|
||||
}
|
||||
ImGui::PopStyleColor(2);
|
||||
ImGui::PopID();
|
||||
|
@ -343,7 +337,7 @@ void World::step(const float& stepTime) {
|
|||
ImGui::RadioButton("Window", &blockToPlace, (int)BlockType::WINDOW);
|
||||
ImGui::Unindent();
|
||||
ImGui::EndGroup();
|
||||
}
|
||||
|
||||
ImGui::End();
|
||||
#endif
|
||||
}
|
||||
|
|
7
main.cpp
7
main.cpp
|
@ -115,12 +115,7 @@ int main()
|
|||
ImGui::SetNextWindowBgAlpha(0.2f);
|
||||
ImGui::Begin("FPS", nullptr ,window_flags);
|
||||
if (fpsDataClock.getElapsedTime().asMilliseconds() > 20) {
|
||||
if (frameCount >= 100) {
|
||||
memmove(frameTimings, frameTimings + 1, 99 * sizeof(float));
|
||||
frameTimings[99] = static_cast<float>(deltaT.asMicroseconds());
|
||||
} else [[unlikely]] {
|
||||
frameTimings[frameCount] = static_cast<float>(deltaT.asMicroseconds());
|
||||
}
|
||||
frameTimings[frameCount%100] = static_cast<float>(deltaT.asMicroseconds());
|
||||
frameCount++;
|
||||
fpsDataClock.restart();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue