From b6a8358e9ebf8c3b208f94f00a512db595b3cf67 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 22 Nov 2023 21:15:12 +0300 Subject: [PATCH 1/2] Added bindings for mouse clicks, fixed lights --- res/shaders/main.glslv | 2 +- src/core_defs.h | 3 +++ src/definitions.cpp | 3 +++ src/frontend/menu.cpp | 2 +- src/objects/player_control.cpp | 10 +++++----- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/res/shaders/main.glslv b/res/shaders/main.glslv index b1412148..1ebe9472 100644 --- a/res/shaders/main.glslv +++ b/res/shaders/main.glslv @@ -22,7 +22,7 @@ void main(){ vec2 pos2d = (u_model * vec4(v_position, 1.0)).xz-u_cameraPos.xz; vec4 modelpos = u_model * vec4(v_position+vec3(0,pow(length(pos2d)*0.0, 3.0),0), 1.0); vec4 viewmodelpos = u_view * modelpos; - vec3 light = v_light.rgb * 1.6; + vec3 light = v_light.rgb; float torchlight = max(0.0, 1.0-distance(u_cameraPos, modelpos.xyz)/u_torchlightDistance); light += torchlight * u_torchlightColor; a_color = vec4(pow(light, vec3(u_gamma)),1.0f); diff --git a/src/core_defs.h b/src/core_defs.h index c30135bf..ffd26795 100644 --- a/src/core_defs.h +++ b/src/core_defs.h @@ -16,6 +16,9 @@ #define BIND_CAM_ZOOM "camera.zoom" #define BIND_PLAYER_NOCLIP "player.noclip" #define BIND_PLAYER_FLIGHT "player.flight" +#define BIND_PLAYER_ATTACK "player.attack" +#define BIND_PLAYER_BUILD "player.build" +#define BIND_PLAYER_PICK "player.pick" #define BIND_HUD_INVENTORY "hud.inventory" #endif // SRC_CORE_DEFS_H_ \ No newline at end of file diff --git a/src/definitions.cpp b/src/definitions.cpp index ee7023c1..748b8812 100644 --- a/src/definitions.cpp +++ b/src/definitions.cpp @@ -103,5 +103,8 @@ void setup_bindings() { Events::bind(BIND_CAM_ZOOM, inputtype::keyboard, keycode::C); Events::bind(BIND_PLAYER_NOCLIP, inputtype::keyboard, keycode::N); Events::bind(BIND_PLAYER_FLIGHT, inputtype::keyboard, keycode::F); + Events::bind(BIND_PLAYER_ATTACK, inputtype::mouse, mousecode::BUTTON_1); + Events::bind(BIND_PLAYER_BUILD, inputtype::mouse, mousecode::BUTTON_2); + Events::bind(BIND_PLAYER_PICK, inputtype::mouse, mousecode::BUTTON_3); Events::bind(BIND_HUD_INVENTORY, inputtype::keyboard, keycode::TAB); } \ No newline at end of file diff --git a/src/frontend/menu.cpp b/src/frontend/menu.cpp index 92af70dd..78305b34 100644 --- a/src/frontend/menu.cpp +++ b/src/frontend/menu.cpp @@ -170,7 +170,7 @@ Panel* create_controls_panel(Engine* engine, PagesControl* menu) { for (auto& entry : Events::bindings){ string bindname = entry.first; - Panel* subpanel = new Panel(vec2(400, 45), vec4(5.0f), 1.0f); + Panel* subpanel = new Panel(vec2(400, 40), vec4(5.0f), 1.0f); subpanel->color(vec4(0.0f)); subpanel->orientation(Orientation::horizontal); diff --git a/src/objects/player_control.cpp b/src/objects/player_control.cpp index fac74e19..a2fd3a09 100644 --- a/src/objects/player_control.cpp +++ b/src/objects/player_control.cpp @@ -221,10 +221,10 @@ void PlayerController::updateInteraction(){ vec3 norm; bool xkey = Events::pressed(keycode::X); - bool lclick = Events::jclicked(mousecode::BUTTON_1) || - (xkey && Events::clicked(mousecode::BUTTON_1)); - bool rclick = Events::jclicked(mousecode::BUTTON_2) || - (xkey && Events::clicked(mousecode::BUTTON_2)); + bool lclick = Events::jactive(BIND_PLAYER_ATTACK) || + (xkey && Events::active(BIND_PLAYER_ATTACK)); + bool rclick = Events::jactive(BIND_PLAYER_BUILD) || + (xkey && Events::active(BIND_PLAYER_BUILD)); float maxDistance = 10.0f; if (xkey) { maxDistance *= 20.0f; @@ -270,7 +270,7 @@ void PlayerController::updateInteraction(){ lighting->onBlockSet(x,y,z, player->choosenBlock); } } - if (Events::jclicked(mousecode::BUTTON_3)){ + if (Events::jactive(BIND_PLAYER_PICK)){ player->choosenBlock = chunks->get(x,y,z)->id; } } else { From 4946b7d17dd209fdba704d8749fe7d466926e125 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 22 Nov 2023 21:20:11 +0300 Subject: [PATCH 2/2] Camera shaking off while cheat movement --- src/objects/player_control.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/objects/player_control.cpp b/src/objects/player_control.cpp index a2fd3a09..140c2e69 100644 --- a/src/objects/player_control.cpp +++ b/src/objects/player_control.cpp @@ -78,6 +78,7 @@ void PlayerController::updateControls(float delta){ Player* player = level->player; Camera* camera = player->camera; Hitbox* hitbox = player->hitbox; + bool cameraShaking = camSettings.shaking; bool crouch = input.shift && hitbox->grounded && !input.sprint; float speed = player->speed; @@ -87,6 +88,7 @@ void PlayerController::updateControls(float delta){ } if (input.cheat){ speed *= CHEAT_SPEED_MUL; + cameraShaking = false; } if (crouch) { @@ -131,7 +133,7 @@ void PlayerController::updateControls(float delta){ cameraOffset = vec3(0.0f, 0.7f, 0.0f); - if (camSettings.shaking) { + if (cameraShaking) { player->interpVel = player->interpVel * (1.0f - delta * 5) + hitbox->velocity * delta * 0.1f; if (hitbox->grounded && player->interpVel.y < 0.0f){ player->interpVel.y *= -30.0f;