1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#include "cam.h"
#include <rcamera.h>
CameraInfo main_cam = {0};
void
cam_init(void) {
rlSetClipPlanes(0.3, 5000);
main_cam.cam = (Camera3D) {
.position = { 0, 10, -10 },
.target = { 0, 1, 0 },
.up = { 0, 1, 0},
.fovy = 70.0f,
.projection = CAMERA_PERSPECTIVE,
};
main_cam.update = false;
main_cam.mv_speed = 10;
main_cam.mv_scale = 1;
main_cam.lk_speed = 0.2;
}
void
cam_ctrl_editor(void) {
if (!main_cam.update) {
return;
}
Vec3 input_dir = {0};
f32 mv_speed = main_cam.mv_speed;
f32 lk_speed = main_cam.lk_speed;
if (IsKeyDown(KEY_W)) {
input_dir.z += 1;
}
if (IsKeyDown(KEY_A)) {
input_dir.x -= 1;
}
if (IsKeyDown(KEY_S)) {
input_dir.z -= 1;
}
if (IsKeyDown(KEY_D)) {
input_dir.x += 1;
}
if (IsKeyDown(KEY_Q)) {
input_dir.y -= 1;
}
if (IsKeyDown(KEY_E)) {
input_dir.y += 1;
}
input_dir = Vector3Normalize(input_dir);
if (IsKeyDown(KEY_LEFT_SHIFT)) {
mv_speed *= 3;
}
// makes it so you can stop faster than you can speed up
f32 ms_amount = GetMouseWheelMove() < 0 ?
GetMouseWheelMove() * 1.5 :
GetMouseWheelMove() * 0.75;
main_cam.mv_scale += ms_amount;
main_cam.mv_scale = CLAMP(main_cam.mv_scale, 0.1, 50);
mv_speed *= main_cam.mv_scale;
mv_speed = CLAMP(mv_speed, 2, 1000);
CameraMoveForward(&main_cam.cam,
input_dir.z * mv_speed * GetFrameTime(),
false);
CameraMoveRight(&main_cam.cam,
input_dir.x * mv_speed * GetFrameTime(),
false);
CameraMoveUp(&main_cam.cam, input_dir.y * mv_speed * GetFrameTime());
CameraYaw(&main_cam.cam,
-GetMouseDelta().x * lk_speed * GetFrameTime(), 0);
CameraPitch(&main_cam.cam,
-GetMouseDelta().y * lk_speed * GetFrameTime(), 1, 0, 0);
}
|