Merge pull request #662 from MihailRis/core-cameras-and-mouse-delta

Core cameras and mouse delta things
This commit is contained in:
MihailRis 2025-11-04 18:14:43 +03:00 committed by GitHub
commit 497160a5b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 34 additions and 5 deletions

View File

@ -48,6 +48,12 @@ input.get_mouse_pos() --> {int, int}
Returns cursor screen position.
```lua
input.get_mouse_delta() --> {int, int}
```
Returns cursor movement delta.
```lua
input.get_bindings() --> strings array
```

View File

@ -48,6 +48,12 @@ input.get_mouse_pos() --> {int, int}
Возвращает позицию курсора на экране.
```lua
input.get_mouse_delta() --> {int, int}
```
Возращает дельту позиции курсора.
```lua
input.get_bindings() --> массив строк
```

View File

@ -49,8 +49,7 @@ LevelFrontend::LevelFrontend(
auto sound = rassets.get<audio::Sound>(material->stepsSound);
glm::vec3 pos {};
auto soundsCamera = currentPlayer->currentCamera.get();
if (soundsCamera == currentPlayer->spCamera.get() ||
soundsCamera == currentPlayer->tpCamera.get()) {
if (currentPlayer->isCurrentCameraBuiltin()) {
soundsCamera = currentPlayer->fpCamera.get();
}
bool relative = player == currentPlayer &&

View File

@ -207,8 +207,7 @@ void CameraControl::update(
tpCamera->front = camera->front;
tpCamera->right = camera->right;
}
if (player.currentCamera == spCamera || player.currentCamera == tpCamera ||
player.currentCamera == camera) {
if (player.isCurrentCameraBuiltin()) {
player.currentCamera->setFov(glm::radians(settings.fov.get()));
}
}
@ -280,7 +279,7 @@ void PlayerController::postUpdate(
updateFootsteps(delta);
}
if (!pause && input) {
if (!pause && input && player.isCurrentCameraBuiltin()) {
camControl.updateMouse(this->input, windowHeight);
}
camControl.refreshRotation();

View File

@ -82,6 +82,12 @@ static int l_get_mouse_pos(lua::State* L) {
return lua::pushvec2(L, engine->getInput().getCursor().pos);
}
static int l_get_mouse_delta(lua::State* L) {
if (engine->isHeadless())
return 0;
return lua::pushvec2(L, engine->getInput().getCursor().delta);
}
static int l_get_bindings(lua::State* L) {
if (engine->isHeadless())
return 0;
@ -171,6 +177,7 @@ const luaL_Reg inputlib[] = {
{"mousecode", lua::wrap<l_mousecode>},
{"add_callback", lua::wrap<l_add_callback>},
{"get_mouse_pos", lua::wrap<l_get_mouse_pos>},
{"get_mouse_delta", lua::wrap<l_get_mouse_delta>},
{"get_bindings", lua::wrap<l_get_bindings>},
{"get_binding_text", lua::wrap<l_get_binding_text>},
{"is_active", lua::wrap<l_is_active>},

View File

@ -84,6 +84,12 @@ Hitbox* Player::getHitbox() {
return nullptr;
}
bool Player::isCurrentCameraBuiltin() const {
return currentCamera.get() == fpCamera.get() ||
currentCamera.get() == spCamera.get() ||
currentCamera.get() == tpCamera.get();
}
void Player::updateSelectedEntity() {
selectedEid = selection.entity;
}

View File

@ -131,6 +131,8 @@ public:
return position;
}
bool isCurrentCameraBuiltin() const;
Hitbox* getHitbox();
void setSpawnPoint(glm::vec3 point);
@ -147,4 +149,8 @@ public:
inline u64id_t getId() const {
return id;
}
Level& getLevel() const {
return level;
}
};