Trying out an FSM for controlling the main loop.
This commit is contained in:
parent
740e30cb2b
commit
7228bdf210
6 changed files with 247 additions and 80 deletions
21
camera.cpp
21
camera.cpp
|
@ -6,14 +6,12 @@ void CameraLOL::plan_run(Raycaster &rayview, int dir) {
|
|||
t = 0.0;
|
||||
targetX = rayview.$posX + int(rayview.$dirX * 1.5 * dir);
|
||||
targetY = rayview.$posY + int(rayview.$dirY * 1.5 * dir);
|
||||
targetDir = dir;
|
||||
}
|
||||
|
||||
bool CameraLOL::play_run(Raycaster &rayview) {
|
||||
t += moveSpeed;
|
||||
rayview.$posX = std::lerp(rayview.$posX, targetX, t);
|
||||
rayview.$posY = std::lerp(rayview.$posY, targetY, t);
|
||||
return t >= 1.0;
|
||||
void CameraLOL::plan_strafe(Raycaster &rayview, int dir) {
|
||||
t = 0.0;
|
||||
targetX = rayview.$posX + int(-rayview.$dirY * 1.5 * dir);
|
||||
targetY = rayview.$posY + int(rayview.$dirX * 1.5 * dir);
|
||||
}
|
||||
|
||||
void CameraLOL::plan_rotate(Raycaster &rayview, int dir) {
|
||||
|
@ -25,8 +23,6 @@ void CameraLOL::plan_rotate(Raycaster &rayview, int dir) {
|
|||
|
||||
targetPlaneX = rayview.$planeX * cos(angle_dir) - rayview.$planeY * sin(angle_dir);
|
||||
targetPlaneY = rayview.$planeX * sin(angle_dir) + rayview.$planeY * cos(angle_dir);
|
||||
|
||||
targetDir = dir;
|
||||
}
|
||||
|
||||
bool CameraLOL::play_rotate(Raycaster &rayview) {
|
||||
|
@ -39,14 +35,7 @@ bool CameraLOL::play_rotate(Raycaster &rayview) {
|
|||
return t > 1.0;
|
||||
}
|
||||
|
||||
void CameraLOL::plan_strafe(Raycaster &rayview, int dir) {
|
||||
t = 0.0;
|
||||
|
||||
targetX = rayview.$posX + int(-rayview.$dirY * 1.5 * dir);
|
||||
targetY = rayview.$posY + int(rayview.$dirX * 1.5 * dir);
|
||||
}
|
||||
|
||||
bool CameraLOL::play_strafe(Raycaster &rayview) {
|
||||
bool CameraLOL::play_move(Raycaster &rayview) {
|
||||
t += moveSpeed;
|
||||
rayview.$posX = std::lerp(rayview.$posX, targetX, t);
|
||||
rayview.$posY = std::lerp(rayview.$posY, targetY, t);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue