new player.* functions
This commit is contained in:
parent
0ad3dd7ab8
commit
1917cbba8b
@ -69,6 +69,20 @@ player.get_inventory(playerid: int) -> int, int
|
|||||||
|
|
||||||
Returns player inventory ID and selected slot index (0-9)
|
Returns player inventory ID and selected slot index (0-9)
|
||||||
|
|
||||||
|
```python
|
||||||
|
player.is_flight() -> bool
|
||||||
|
player.set_flight(bool)
|
||||||
|
```
|
||||||
|
|
||||||
|
Getter and setter for player flight mode
|
||||||
|
|
||||||
|
```python
|
||||||
|
player.is_noclip() -> bool
|
||||||
|
player.set_noclip(bool)
|
||||||
|
```
|
||||||
|
|
||||||
|
Getter and setter for player noclip mode (physics disabled)
|
||||||
|
|
||||||
## *world* library
|
## *world* library
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@ -63,6 +63,20 @@ player.get_inventory(playerid: int) -> int, int
|
|||||||
|
|
||||||
Возвращает id инвентаря игрока и индекс выбранного слота (от 0 до 9)
|
Возвращает id инвентаря игрока и индекс выбранного слота (от 0 до 9)
|
||||||
|
|
||||||
|
```python
|
||||||
|
player.is_flight() -> bool
|
||||||
|
player.set_flight(bool)
|
||||||
|
```
|
||||||
|
|
||||||
|
Геттер и сеттер режима полета
|
||||||
|
|
||||||
|
```python
|
||||||
|
player.is_noclip() -> bool
|
||||||
|
player.set_noclip(bool)
|
||||||
|
```
|
||||||
|
|
||||||
|
Геттер и сеттер noclip режима (выключенная физика игрока)
|
||||||
|
|
||||||
## Библиотека world
|
## Библиотека world
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@ -187,12 +187,12 @@ int LuaState::gettop() const {
|
|||||||
return lua_gettop(L);
|
return lua_gettop(L);
|
||||||
}
|
}
|
||||||
|
|
||||||
int LuaState::pushinteger(luaint x) {
|
int LuaState::pushinteger(lua_Integer x) {
|
||||||
lua_pushinteger(L, x);
|
lua_pushinteger(L, x);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int LuaState::pushnumber(luanumber x) {
|
int LuaState::pushnumber(lua_Number x) {
|
||||||
lua_pushnumber(L, x);
|
lua_pushnumber(L, x);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -202,7 +202,7 @@ int LuaState::pushboolean(bool x) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int LuaState::pushivec3(luaint x, luaint y, luaint z) {
|
int LuaState::pushivec3(lua_Integer x, lua_Integer y, lua_Integer z) {
|
||||||
lua::pushivec3(L, x, y, z);
|
lua::pushivec3(L, x, y, z);
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
@ -291,11 +291,11 @@ bool LuaState::toboolean(int idx) {
|
|||||||
return lua_toboolean(L, idx);
|
return lua_toboolean(L, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
luaint LuaState::tointeger(int idx) {
|
lua_Integer LuaState::tointeger(int idx) {
|
||||||
return lua_tointeger(L, idx);
|
return lua_tointeger(L, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
luanumber LuaState::tonumber(int idx) {
|
lua_Number LuaState::tonumber(int idx) {
|
||||||
return lua_tonumber(L, idx);
|
return lua_tonumber(L, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,10 +7,6 @@
|
|||||||
#include "../../../data/dynamic.hpp"
|
#include "../../../data/dynamic.hpp"
|
||||||
#include "../../../delegates.hpp"
|
#include "../../../delegates.hpp"
|
||||||
|
|
||||||
#ifndef LUAJIT_VERSION
|
|
||||||
#error LuaJIT required
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
@ -36,9 +32,9 @@ namespace lua {
|
|||||||
static const std::string envName(int env);
|
static const std::string envName(int env);
|
||||||
void loadbuffer(int env, const std::string& src, const std::string& file);
|
void loadbuffer(int env, const std::string& src, const std::string& file);
|
||||||
int gettop() const;
|
int gettop() const;
|
||||||
int pushivec3(luaint x, luaint y, luaint z);
|
int pushivec3(lua_Integer x, lua_Integer y, lua_Integer z);
|
||||||
int pushinteger(luaint x);
|
int pushinteger(lua_Integer x);
|
||||||
int pushnumber(luanumber x);
|
int pushnumber(lua_Number x);
|
||||||
int pushboolean(bool x);
|
int pushboolean(bool x);
|
||||||
int pushstring(const std::string& str);
|
int pushstring(const std::string& str);
|
||||||
int pushenv(int env);
|
int pushenv(int env);
|
||||||
@ -51,8 +47,8 @@ namespace lua {
|
|||||||
bool getfield(const std::string& name, int idx = -1);
|
bool getfield(const std::string& name, int idx = -1);
|
||||||
void setfield(const std::string& name, int idx = -2);
|
void setfield(const std::string& name, int idx = -2);
|
||||||
bool toboolean(int idx);
|
bool toboolean(int idx);
|
||||||
luaint tointeger(int idx);
|
lua_Integer tointeger(int idx);
|
||||||
luanumber tonumber(int idx);
|
lua_Number tonumber(int idx);
|
||||||
glm::vec2 tovec2(int idx);
|
glm::vec2 tovec2(int idx);
|
||||||
glm::vec4 tocolor(int idx);
|
glm::vec4 tocolor(int idx);
|
||||||
dynamic::Value tovalue(int idx);
|
dynamic::Value tovalue(int idx);
|
||||||
|
|||||||
@ -23,22 +23,22 @@ inline int extract_channel_index(lua_State* L, int idx) {
|
|||||||
inline audio::speakerid_t play_sound(
|
inline audio::speakerid_t play_sound(
|
||||||
const char* name,
|
const char* name,
|
||||||
bool relative,
|
bool relative,
|
||||||
lua::luanumber x,
|
lua_Number x,
|
||||||
lua::luanumber y,
|
lua_Number y,
|
||||||
lua::luanumber z,
|
lua_Number z,
|
||||||
lua::luanumber volume,
|
lua_Number volume,
|
||||||
lua::luanumber pitch,
|
lua_Number pitch,
|
||||||
bool loop,
|
bool loop,
|
||||||
int channel
|
int channel
|
||||||
) {
|
) {
|
||||||
if (channel == -1)
|
if (channel == -1) {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
auto assets = scripting::engine->getAssets();
|
auto assets = scripting::engine->getAssets();
|
||||||
auto sound = assets->getSound(name);
|
auto sound = assets->getSound(name);
|
||||||
if (sound == nullptr) {
|
if (sound == nullptr) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return audio::play(
|
return audio::play(
|
||||||
sound,
|
sound,
|
||||||
glm::vec3(
|
glm::vec3(
|
||||||
@ -58,20 +58,20 @@ inline audio::speakerid_t play_sound(
|
|||||||
inline audio::speakerid_t play_stream(
|
inline audio::speakerid_t play_stream(
|
||||||
const char* filename,
|
const char* filename,
|
||||||
bool relative,
|
bool relative,
|
||||||
lua::luanumber x,
|
lua_Number x,
|
||||||
lua::luanumber y,
|
lua_Number y,
|
||||||
lua::luanumber z,
|
lua_Number z,
|
||||||
lua::luanumber volume,
|
lua_Number volume,
|
||||||
lua::luanumber pitch,
|
lua_Number pitch,
|
||||||
bool loop,
|
bool loop,
|
||||||
int channel
|
int channel
|
||||||
) {
|
) {
|
||||||
if (channel == -1)
|
if (channel == -1) {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
auto paths = scripting::engine->getResPaths();
|
auto paths = scripting::engine->getResPaths();
|
||||||
fs::path file = paths->find(filename);
|
|
||||||
return audio::play_stream(
|
return audio::play_stream(
|
||||||
file,
|
paths->find(filename),
|
||||||
glm::vec3(
|
glm::vec3(
|
||||||
static_cast<float>(x),
|
static_cast<float>(x),
|
||||||
static_cast<float>(y),
|
static_cast<float>(y),
|
||||||
@ -95,7 +95,7 @@ inline audio::speakerid_t play_stream(
|
|||||||
/// channel: string = "regular",
|
/// channel: string = "regular",
|
||||||
/// loop: bool = false)
|
/// loop: bool = false)
|
||||||
static int l_audio_play_stream(lua_State* L) {
|
static int l_audio_play_stream(lua_State* L) {
|
||||||
lua_pushinteger(L, static_cast<lua::luaint>(
|
lua_pushinteger(L, static_cast<lua_Integer>(
|
||||||
play_stream(
|
play_stream(
|
||||||
lua_tostring(L, 1),
|
lua_tostring(L, 1),
|
||||||
false,
|
false,
|
||||||
@ -118,7 +118,7 @@ static int l_audio_play_stream(lua_State* L) {
|
|||||||
/// channel: string = "regular",
|
/// channel: string = "regular",
|
||||||
/// loop: bool = false)
|
/// loop: bool = false)
|
||||||
static int l_audio_play_stream_2d(lua_State* L) {
|
static int l_audio_play_stream_2d(lua_State* L) {
|
||||||
lua_pushinteger(L, static_cast<lua::luaint>(
|
lua_pushinteger(L, static_cast<lua_Integer>(
|
||||||
play_stream(
|
play_stream(
|
||||||
lua_tostring(L, 1),
|
lua_tostring(L, 1),
|
||||||
true,
|
true,
|
||||||
@ -142,7 +142,7 @@ static int l_audio_play_stream_2d(lua_State* L) {
|
|||||||
/// channel: string = "regular",
|
/// channel: string = "regular",
|
||||||
/// loop: bool = false)
|
/// loop: bool = false)
|
||||||
static int l_audio_play_sound(lua_State* L) {
|
static int l_audio_play_sound(lua_State* L) {
|
||||||
lua_pushinteger(L, static_cast<lua::luaint>(
|
lua_pushinteger(L, static_cast<lua_Integer>(
|
||||||
play_sound(
|
play_sound(
|
||||||
lua_tostring(L, 1),
|
lua_tostring(L, 1),
|
||||||
false,
|
false,
|
||||||
@ -165,7 +165,7 @@ static int l_audio_play_sound(lua_State* L) {
|
|||||||
/// channel: string = "regular",
|
/// channel: string = "regular",
|
||||||
/// loop: bool = false)
|
/// loop: bool = false)
|
||||||
static int l_audio_play_sound_2d(lua_State* L) {
|
static int l_audio_play_sound_2d(lua_State* L) {
|
||||||
lua_pushinteger(L, static_cast<lua::luaint>(
|
lua_pushinteger(L, static_cast<lua_Integer>(
|
||||||
play_sound(
|
play_sound(
|
||||||
lua_tostring(L, 1),
|
lua_tostring(L, 1),
|
||||||
true,
|
true,
|
||||||
@ -181,8 +181,7 @@ static int l_audio_play_sound_2d(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.stop(speakerid: integer) -> nil
|
/// @brief audio.stop(speakerid: integer) -> nil
|
||||||
static int l_audio_stop(lua_State* L) {
|
static int l_audio_stop(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
speaker->stop();
|
speaker->stop();
|
||||||
}
|
}
|
||||||
@ -191,8 +190,7 @@ static int l_audio_stop(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.pause(speakerid: integer) -> nil
|
/// @brief audio.pause(speakerid: integer) -> nil
|
||||||
static int l_audio_pause(lua_State* L) {
|
static int l_audio_pause(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
speaker->pause();
|
speaker->pause();
|
||||||
}
|
}
|
||||||
@ -201,8 +199,7 @@ static int l_audio_pause(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.resume(speakerid: integer) -> nil
|
/// @brief audio.resume(speakerid: integer) -> nil
|
||||||
static int l_audio_resume(lua_State* L) {
|
static int l_audio_resume(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr && speaker->isPaused()) {
|
if (speaker != nullptr && speaker->isPaused()) {
|
||||||
speaker->play();
|
speaker->play();
|
||||||
}
|
}
|
||||||
@ -211,8 +208,7 @@ static int l_audio_resume(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.set_loop(speakerid: integer, value: bool) -> nil
|
/// @brief audio.set_loop(speakerid: integer, value: bool) -> nil
|
||||||
static int l_audio_set_loop(lua_State* L) {
|
static int l_audio_set_loop(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
bool value = lua_toboolean(L, 2);
|
bool value = lua_toboolean(L, 2);
|
||||||
speaker->setLoop(value);
|
speaker->setLoop(value);
|
||||||
@ -222,45 +218,38 @@ static int l_audio_set_loop(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.set_volume(speakerid: integer, value: number) -> nil
|
/// @brief audio.set_volume(speakerid: integer, value: number) -> nil
|
||||||
static int l_audio_set_volume(lua_State* L) {
|
static int l_audio_set_volume(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua::luanumber value = lua_tonumber(L, 2);
|
speaker->setVolume(static_cast<float>(lua_tonumber(L, 2)));
|
||||||
speaker->setVolume(static_cast<float>(value));
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief audio.set_pitch(speakerid: integer, value: number) -> nil
|
/// @brief audio.set_pitch(speakerid: integer, value: number) -> nil
|
||||||
static int l_audio_set_pitch(lua_State* L) {
|
static int l_audio_set_pitch(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua::luanumber value = lua_tonumber(L, 2);
|
speaker->setPitch(static_cast<float>(lua_tonumber(L, 2)));
|
||||||
speaker->setPitch(static_cast<float>(value));
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief audio.set_time(speakerid: integer, value: number) -> nil
|
/// @brief audio.set_time(speakerid: integer, value: number) -> nil
|
||||||
static int l_audio_set_time(lua_State* L) {
|
static int l_audio_set_time(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua::luanumber value = lua_tonumber(L, 2);
|
speaker->setTime(static_cast<audio::duration_t>(lua_tonumber(L, 2)));
|
||||||
speaker->setTime(static_cast<audio::duration_t>(value));
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief audio.set_position(speakerid: integer, x: number, y: number, z: number) -> nil
|
/// @brief audio.set_position(speakerid: integer, x: number, y: number, z: number) -> nil
|
||||||
static int l_audio_set_position(lua_State* L) {
|
static int l_audio_set_position(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua::luanumber x = lua_tonumber(L, 2);
|
auto x = lua_tonumber(L, 2);
|
||||||
lua::luanumber y = lua_tonumber(L, 3);
|
auto y = lua_tonumber(L, 3);
|
||||||
lua::luanumber z = lua_tonumber(L, 4);
|
auto z = lua_tonumber(L, 4);
|
||||||
speaker->setPosition(glm::vec3(
|
speaker->setPosition(glm::vec3(
|
||||||
static_cast<float>(x),
|
static_cast<float>(x),
|
||||||
static_cast<float>(y),
|
static_cast<float>(y),
|
||||||
@ -272,12 +261,11 @@ static int l_audio_set_position(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.set_velocity(speakerid: integer, x: number, y: number, z: number) -> nil
|
/// @brief audio.set_velocity(speakerid: integer, x: number, y: number, z: number) -> nil
|
||||||
static int l_audio_set_velocity(lua_State* L) {
|
static int l_audio_set_velocity(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua::luanumber x = lua_tonumber(L, 2);
|
auto x = lua_tonumber(L, 2);
|
||||||
lua::luanumber y = lua_tonumber(L, 3);
|
auto y = lua_tonumber(L, 3);
|
||||||
lua::luanumber z = lua_tonumber(L, 4);
|
auto z = lua_tonumber(L, 4);
|
||||||
speaker->setVelocity(glm::vec3(
|
speaker->setVelocity(glm::vec3(
|
||||||
static_cast<float>(x),
|
static_cast<float>(x),
|
||||||
static_cast<float>(y),
|
static_cast<float>(y),
|
||||||
@ -289,8 +277,7 @@ static int l_audio_set_velocity(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.is_playing(speakerid: integer) -> bool
|
/// @brief audio.is_playing(speakerid: integer) -> bool
|
||||||
static int l_audio_is_playing(lua_State* L) {
|
static int l_audio_is_playing(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushboolean(L, speaker->isPlaying());
|
lua_pushboolean(L, speaker->isPlaying());
|
||||||
return 1;
|
return 1;
|
||||||
@ -301,8 +288,7 @@ static int l_audio_is_playing(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.is_paused(speakerid: integer) -> bool
|
/// @brief audio.is_paused(speakerid: integer) -> bool
|
||||||
static int l_audio_is_paused(lua_State* L) {
|
static int l_audio_is_paused(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushboolean(L, speaker->isPaused());
|
lua_pushboolean(L, speaker->isPaused());
|
||||||
return 1;
|
return 1;
|
||||||
@ -313,8 +299,7 @@ static int l_audio_is_paused(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.is_loop(speakerid: integer) -> bool
|
/// @brief audio.is_loop(speakerid: integer) -> bool
|
||||||
static int l_audio_is_loop(lua_State* L) {
|
static int l_audio_is_loop(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushboolean(L, speaker->isLoop());
|
lua_pushboolean(L, speaker->isLoop());
|
||||||
return 1;
|
return 1;
|
||||||
@ -325,8 +310,7 @@ static int l_audio_is_loop(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_volume(speakerid: integer) -> number
|
/// @brief audio.get_volume(speakerid: integer) -> number
|
||||||
static int l_audio_get_volume(lua_State* L) {
|
static int l_audio_get_volume(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushnumber(L, speaker->getVolume());
|
lua_pushnumber(L, speaker->getVolume());
|
||||||
return 1;
|
return 1;
|
||||||
@ -337,8 +321,7 @@ static int l_audio_get_volume(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_pitch(speakerid: integer) -> number
|
/// @brief audio.get_pitch(speakerid: integer) -> number
|
||||||
static int l_audio_get_pitch(lua_State* L) {
|
static int l_audio_get_pitch(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushnumber(L, speaker->getPitch());
|
lua_pushnumber(L, speaker->getPitch());
|
||||||
return 1;
|
return 1;
|
||||||
@ -349,8 +332,7 @@ static int l_audio_get_pitch(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_time(speakerid: integer) -> number
|
/// @brief audio.get_time(speakerid: integer) -> number
|
||||||
static int l_audio_get_time(lua_State* L) {
|
static int l_audio_get_time(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushnumber(L, speaker->getTime());
|
lua_pushnumber(L, speaker->getTime());
|
||||||
return 1;
|
return 1;
|
||||||
@ -361,8 +343,7 @@ static int l_audio_get_time(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_duration(speakerid: integer) -> number
|
/// @brief audio.get_duration(speakerid: integer) -> number
|
||||||
static int l_audio_get_duration(lua_State* L) {
|
static int l_audio_get_duration(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
lua_pushnumber(L, speaker->getDuration());
|
lua_pushnumber(L, speaker->getDuration());
|
||||||
return 1;
|
return 1;
|
||||||
@ -373,11 +354,9 @@ static int l_audio_get_duration(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_position(speakerid: integer) -> number, number, number
|
/// @brief audio.get_position(speakerid: integer) -> number, number, number
|
||||||
static int l_audio_get_position(lua_State* L) {
|
static int l_audio_get_position(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
auto vec = speaker->getPosition();
|
lua::pushvec3(L, speaker->getPosition());
|
||||||
lua::pushvec3(L, vec);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -385,8 +364,7 @@ static int l_audio_get_position(lua_State* L) {
|
|||||||
|
|
||||||
/// @brief audio.get_velocity(speakerid: integer) -> number, number, number
|
/// @brief audio.get_velocity(speakerid: integer) -> number, number, number
|
||||||
static int l_audio_get_velocity(lua_State* L) {
|
static int l_audio_get_velocity(lua_State* L) {
|
||||||
lua::luaint id = lua_tonumber(L, 1);
|
auto speaker = audio::get_speaker(lua_tointeger(L, 1));
|
||||||
auto speaker = audio::get_speaker(id);
|
|
||||||
if (speaker != nullptr) {
|
if (speaker != nullptr) {
|
||||||
auto vec = speaker->getVelocity();
|
auto vec = speaker->getVelocity();
|
||||||
lua::pushvec3(L, vec);
|
lua::pushvec3(L, vec);
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
#include "lua_commons.hpp"
|
#include "lua_commons.hpp"
|
||||||
|
|
||||||
#include "api_lua.hpp"
|
#include "api_lua.hpp"
|
||||||
#include "lua_util.hpp"
|
#include "lua_util.hpp"
|
||||||
#include "../scripting.hpp"
|
#include "../scripting.hpp"
|
||||||
|
|
||||||
#include "../../../world/Level.hpp"
|
#include "../../../world/Level.hpp"
|
||||||
#include "../../../voxels/Chunks.hpp"
|
#include "../../../voxels/Chunks.hpp"
|
||||||
#include "../../../voxels/Chunk.hpp"
|
#include "../../../voxels/Chunk.hpp"
|
||||||
@ -13,7 +15,7 @@
|
|||||||
|
|
||||||
int l_block_name(lua_State* L) {
|
int l_block_name(lua_State* L) {
|
||||||
auto indices = scripting::content->getIndices();
|
auto indices = scripting::content->getIndices();
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Integer id = lua_tointeger(L, 1);
|
||||||
if (id < 0 || size_t(id) >= indices->countBlockDefs()) {
|
if (id < 0 || size_t(id) >= indices->countBlockDefs()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -22,10 +24,9 @@ int l_block_name(lua_State* L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int l_block_material(lua_State* L) {
|
int l_block_material(lua_State* L) {
|
||||||
auto indices = scripting::content->getIndices();
|
auto indices = scripting::content->getIndices();
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Integer id = lua_tointeger(L, 1);
|
||||||
if (id < 0 || size_t(id) >= indices->countBlockDefs()) {
|
if (id < 0 || size_t(id) >= indices->countBlockDefs()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -35,9 +36,9 @@ int l_block_material(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_is_solid_at(lua_State* L) {
|
int l_is_solid_at(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
|
|
||||||
lua_pushboolean(L, scripting::level->chunks->isSolidBlock(x, y, z));
|
lua_pushboolean(L, scripting::level->chunks->isSolidBlock(x, y, z));
|
||||||
return 1;
|
return 1;
|
||||||
@ -49,17 +50,17 @@ int l_blocks_count(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_block_index(lua_State* L) {
|
int l_block_index(lua_State* L) {
|
||||||
auto name = lua_tostring(L, 1);
|
std::string name = lua_tostring(L, 1);
|
||||||
lua_pushinteger(L, scripting::content->requireBlock(name).rt.id);
|
lua_pushinteger(L, scripting::content->requireBlock(name).rt.id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int l_set_block(lua_State* L) {
|
int l_set_block(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
lua::luaint id = lua_tointeger(L, 4);
|
lua_Integer id = lua_tointeger(L, 4);
|
||||||
lua::luaint states = lua_tointeger(L, 5);
|
lua_Integer states = lua_tointeger(L, 5);
|
||||||
bool noupdate = lua_toboolean(L, 6);
|
bool noupdate = lua_toboolean(L, 6);
|
||||||
if (id < 0 || size_t(id) >= scripting::indices->countBlockDefs()) {
|
if (id < 0 || size_t(id) >= scripting::indices->countBlockDefs()) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -75,9 +76,9 @@ int l_set_block(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block(lua_State* L) {
|
int l_get_block(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
int id = vox == nullptr ? -1 : vox->id;
|
int id = vox == nullptr ? -1 : vox->id;
|
||||||
lua_pushinteger(L, id);
|
lua_pushinteger(L, id);
|
||||||
@ -85,9 +86,9 @@ int l_get_block(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_x(lua_State* L) {
|
int l_get_block_x(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
return lua::pushivec3(L, 1, 0, 0);
|
return lua::pushivec3(L, 1, 0, 0);
|
||||||
@ -102,9 +103,9 @@ int l_get_block_x(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_y(lua_State* L) {
|
int l_get_block_y(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
return lua::pushivec3(L, 0, 1, 0);
|
return lua::pushivec3(L, 0, 1, 0);
|
||||||
@ -119,9 +120,9 @@ int l_get_block_y(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_z(lua_State* L) {
|
int l_get_block_z(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
return lua::pushivec3(L, 0, 0, 1);
|
return lua::pushivec3(L, 0, 0, 1);
|
||||||
@ -136,9 +137,9 @@ int l_get_block_z(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_rotation(lua_State* L) {
|
int l_get_block_rotation(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
int rotation = vox == nullptr ? 0 : vox->rotation();
|
int rotation = vox == nullptr ? 0 : vox->rotation();
|
||||||
lua_pushinteger(L, rotation);
|
lua_pushinteger(L, rotation);
|
||||||
@ -146,10 +147,10 @@ int l_get_block_rotation(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_set_block_rotation(lua_State* L) {
|
int l_set_block_rotation(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
lua::luaint value = lua_tointeger(L, 4);
|
lua_Integer value = lua_tointeger(L, 4);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -160,9 +161,9 @@ int l_set_block_rotation(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_states(lua_State* L) {
|
int l_get_block_states(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
int states = vox == nullptr ? 0 : vox->states;
|
int states = vox == nullptr ? 0 : vox->states;
|
||||||
lua_pushinteger(L, states);
|
lua_pushinteger(L, states);
|
||||||
@ -170,10 +171,10 @@ int l_get_block_states(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_set_block_states(lua_State* L) {
|
int l_set_block_states(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
lua::luaint states = lua_tointeger(L, 4);
|
lua_Integer states = lua_tointeger(L, 4);
|
||||||
|
|
||||||
Chunk* chunk = scripting::level->chunks->getChunkByVoxel(x, y, z);
|
Chunk* chunk = scripting::level->chunks->getChunkByVoxel(x, y, z);
|
||||||
if (chunk == nullptr) {
|
if (chunk == nullptr) {
|
||||||
@ -186,11 +187,11 @@ int l_set_block_states(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_get_block_user_bits(lua_State* L) {
|
int l_get_block_user_bits(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
lua::luaint offset = lua_tointeger(L, 4) + VOXEL_USER_BITS_OFFSET;
|
lua_Integer offset = lua_tointeger(L, 4) + VOXEL_USER_BITS_OFFSET;
|
||||||
lua::luaint bits = lua_tointeger(L, 5);
|
lua_Integer bits = lua_tointeger(L, 5);
|
||||||
|
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
@ -204,14 +205,14 @@ int l_get_block_user_bits(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_set_block_user_bits(lua_State* L) {
|
int l_set_block_user_bits(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
lua::luaint offset = lua_tointeger(L, 4) + VOXEL_USER_BITS_OFFSET;
|
lua_Integer offset = lua_tointeger(L, 4) + VOXEL_USER_BITS_OFFSET;
|
||||||
lua::luaint bits = lua_tointeger(L, 5);
|
lua_Integer bits = lua_tointeger(L, 5);
|
||||||
|
|
||||||
uint mask = ((1 << bits) - 1) << offset;
|
size_t mask = ((1 << bits) - 1) << offset;
|
||||||
lua::luaint value = (lua_tointeger(L, 6) << offset) & mask;
|
lua_Integer value = (lua_tointeger(L, 6) << offset) & mask;
|
||||||
|
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
if (vox == nullptr) {
|
if (vox == nullptr) {
|
||||||
@ -222,9 +223,9 @@ int l_set_block_user_bits(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_is_replaceable_at(lua_State* L) {
|
int l_is_replaceable_at(lua_State* L) {
|
||||||
int x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
int y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
int z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
|
|
||||||
lua_pushboolean(L, scripting::level->chunks->isReplaceableBlock(x, y, z));
|
lua_pushboolean(L, scripting::level->chunks->isReplaceableBlock(x, y, z));
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@ -14,11 +14,11 @@ namespace scripting {
|
|||||||
using namespace scripting;
|
using namespace scripting;
|
||||||
|
|
||||||
static int l_add_command(lua_State* L) {
|
static int l_add_command(lua_State* L) {
|
||||||
if (!lua_isstring(L, 1) || !lua_isstring(L, 2) || !lua_isfunction(L, 3)) {
|
if (!lua_isfunction(L, 3)) {
|
||||||
throw std::runtime_error("invalid argument type");
|
throw std::runtime_error("invalid callback");
|
||||||
}
|
}
|
||||||
auto scheme = lua_tostring(L, 1);
|
auto scheme = state->requireString(1);
|
||||||
auto description = lua_tostring(L, 2);
|
auto description = state->requireString(2);
|
||||||
lua_pushvalue(L, 3);
|
lua_pushvalue(L, 3);
|
||||||
auto func = state->createLambda();
|
auto func = state->createLambda();
|
||||||
try {
|
try {
|
||||||
@ -33,15 +33,15 @@ static int l_add_command(lua_State* L) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_execute(lua_State* L) {
|
static int l_execute(lua_State*) {
|
||||||
auto prompt = lua_tostring(L, 1);
|
auto prompt = state->requireString(1);
|
||||||
auto result = engine->getCommandsInterpreter()->execute(prompt);
|
auto result = engine->getCommandsInterpreter()->execute(prompt);
|
||||||
state->pushvalue(result);
|
state->pushvalue(result);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_set(lua_State* L) {
|
static int l_set(lua_State*) {
|
||||||
auto name = lua_tostring(L, 1);
|
auto name = state->requireString(1);
|
||||||
auto value = state->tovalue(2);
|
auto value = state->tovalue(2);
|
||||||
(*engine->getCommandsInterpreter())[name] = value;
|
(*engine->getCommandsInterpreter())[name] = value;
|
||||||
return 0;
|
return 0;
|
||||||
@ -62,7 +62,7 @@ static int l_get_commands_list(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_get_command_info(lua_State* L) {
|
static int l_get_command_info(lua_State* L) {
|
||||||
auto name = lua_tostring(L, 1);
|
auto name = state->requireString(1);
|
||||||
auto interpreter = engine->getCommandsInterpreter();
|
auto interpreter = engine->getCommandsInterpreter();
|
||||||
auto repo = interpreter->getRepository();
|
auto repo = interpreter->getRepository();
|
||||||
auto command = repo->get(name);
|
auto command = repo->get(name);
|
||||||
|
|||||||
@ -40,9 +40,9 @@ static int l_hud_close_inventory(lua_State*) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_hud_open_block(lua_State* L) {
|
static int l_hud_open_block(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
auto x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
auto y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
auto z = lua_tointeger(L, 3);
|
||||||
bool playerInventory = !lua_toboolean(L, 4);
|
bool playerInventory = !lua_toboolean(L, 4);
|
||||||
|
|
||||||
voxel* vox = scripting::level->chunks->get(x, y, z);
|
voxel* vox = scripting::level->chunks->get(x, y, z);
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
#include "lua_commons.hpp"
|
#include "lua_commons.hpp"
|
||||||
|
|
||||||
#include "api_lua.hpp"
|
#include "api_lua.hpp"
|
||||||
#include "lua_util.hpp"
|
#include "lua_util.hpp"
|
||||||
|
|
||||||
#include "../scripting.hpp"
|
#include "../scripting.hpp"
|
||||||
#include "../../../content/Content.hpp"
|
#include "../../../content/Content.hpp"
|
||||||
#include "../../../world/Level.hpp"
|
#include "../../../world/Level.hpp"
|
||||||
@ -38,8 +40,8 @@ static void validate_slotid(int slotid, Inventory* inv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_get(lua_State* L) {
|
static int l_inventory_get(lua_State* L) {
|
||||||
lua::luaint invid = lua_tointeger(L, 1);
|
lua_Integer invid = lua_tointeger(L, 1);
|
||||||
lua::luaint slotid = lua_tointeger(L, 2);
|
lua_Integer slotid = lua_tointeger(L, 2);
|
||||||
auto inv = get_inventory(invid);
|
auto inv = get_inventory(invid);
|
||||||
validate_slotid(slotid, inv.get());
|
validate_slotid(slotid, inv.get());
|
||||||
const ItemStack& item = inv->getSlot(slotid);
|
const ItemStack& item = inv->getSlot(slotid);
|
||||||
@ -49,10 +51,10 @@ static int l_inventory_get(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_set(lua_State* L) {
|
static int l_inventory_set(lua_State* L) {
|
||||||
lua::luaint invid = lua_tointeger(L, 1);
|
lua_Integer invid = lua_tointeger(L, 1);
|
||||||
lua::luaint slotid = lua_tointeger(L, 2);
|
lua_Integer slotid = lua_tointeger(L, 2);
|
||||||
lua::luaint itemid = lua_tointeger(L, 3);
|
lua_Integer itemid = lua_tointeger(L, 3);
|
||||||
lua::luaint count = lua_tointeger(L, 4);
|
lua_Integer count = lua_tointeger(L, 4);
|
||||||
validate_itemid(itemid);
|
validate_itemid(itemid);
|
||||||
|
|
||||||
auto inv = get_inventory(invid);
|
auto inv = get_inventory(invid);
|
||||||
@ -64,16 +66,16 @@ static int l_inventory_set(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_size(lua_State* L) {
|
static int l_inventory_size(lua_State* L) {
|
||||||
lua::luaint invid = lua_tointeger(L, 1);
|
lua_Integer invid = lua_tointeger(L, 1);
|
||||||
auto inv = get_inventory(invid);
|
auto inv = get_inventory(invid);
|
||||||
lua_pushinteger(L, inv->size());
|
lua_pushinteger(L, inv->size());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_add(lua_State* L) {
|
static int l_inventory_add(lua_State* L) {
|
||||||
lua::luaint invid = lua_tointeger(L, 1);
|
lua_Integer invid = lua_tointeger(L, 1);
|
||||||
lua::luaint itemid = lua_tointeger(L, 2);
|
lua_Integer itemid = lua_tointeger(L, 2);
|
||||||
lua::luaint count = lua_tointeger(L, 3);
|
lua_Integer count = lua_tointeger(L, 3);
|
||||||
validate_itemid(itemid);
|
validate_itemid(itemid);
|
||||||
|
|
||||||
auto inv = get_inventory(invid);
|
auto inv = get_inventory(invid);
|
||||||
@ -84,33 +86,33 @@ static int l_inventory_add(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_get_block(lua_State* L) {
|
static int l_inventory_get_block(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
int64_t id = scripting::blocks->createBlockInventory(x, y, z);
|
int64_t id = scripting::blocks->createBlockInventory(x, y, z);
|
||||||
lua_pushinteger(L, id);
|
lua_pushinteger(L, id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_bind_block(lua_State* L) {
|
static int l_inventory_bind_block(lua_State* L) {
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Integer id = lua_tointeger(L, 1);
|
||||||
lua::luaint x = lua_tointeger(L, 2);
|
lua_Integer x = lua_tointeger(L, 2);
|
||||||
lua::luaint y = lua_tointeger(L, 3);
|
lua_Integer y = lua_tointeger(L, 3);
|
||||||
lua::luaint z = lua_tointeger(L, 4);
|
lua_Integer z = lua_tointeger(L, 4);
|
||||||
scripting::blocks->bindInventory(id, x, y, z);
|
scripting::blocks->bindInventory(id, x, y, z);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_unbind_block(lua_State* L) {
|
static int l_inventory_unbind_block(lua_State* L) {
|
||||||
lua::luaint x = lua_tointeger(L, 1);
|
lua_Integer x = lua_tointeger(L, 1);
|
||||||
lua::luaint y = lua_tointeger(L, 2);
|
lua_Integer y = lua_tointeger(L, 2);
|
||||||
lua::luaint z = lua_tointeger(L, 3);
|
lua_Integer z = lua_tointeger(L, 3);
|
||||||
scripting::blocks->unbindInventory(x, y, z);
|
scripting::blocks->unbindInventory(x, y, z);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_clone(lua_State* L) {
|
static int l_inventory_clone(lua_State* L) {
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Integer id = lua_tointeger(L, 1);
|
||||||
auto clone = scripting::level->inventories->clone(id);
|
auto clone = scripting::level->inventories->clone(id);
|
||||||
if (clone == nullptr) {
|
if (clone == nullptr) {
|
||||||
lua_pushinteger(L, 0);
|
lua_pushinteger(L, 0);
|
||||||
@ -121,13 +123,13 @@ static int l_inventory_clone(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_inventory_move(lua_State* L) {
|
static int l_inventory_move(lua_State* L) {
|
||||||
lua::luaint invAid = lua_tointeger(L, 1);
|
lua_Integer invAid = lua_tointeger(L, 1);
|
||||||
lua::luaint slotAid = lua_tointeger(L, 2);
|
lua_Integer slotAid = lua_tointeger(L, 2);
|
||||||
auto invA = get_inventory(invAid, 1);
|
auto invA = get_inventory(invAid, 1);
|
||||||
validate_slotid(slotAid, invA.get());
|
validate_slotid(slotAid, invA.get());
|
||||||
|
|
||||||
lua::luaint invBid = lua_tointeger(L, 3);
|
lua_Integer invBid = lua_tointeger(L, 3);
|
||||||
lua::luaint slotBid = lua_isnil(L, 4) ? -1 : lua_tointeger(L, 4);
|
lua_Integer slotBid = lua_isnil(L, 4) ? -1 : lua_tointeger(L, 4);
|
||||||
auto invB = get_inventory(invBid, 3);
|
auto invB = get_inventory(invBid, 3);
|
||||||
auto& slot = invA->getSlot(slotAid);
|
auto& slot = invA->getSlot(slotAid);
|
||||||
if (slotBid == -1) {
|
if (slotBid == -1) {
|
||||||
|
|||||||
@ -1,13 +1,20 @@
|
|||||||
#include "lua_commons.hpp"
|
#include "lua_commons.hpp"
|
||||||
#include "api_lua.hpp"
|
#include "api_lua.hpp"
|
||||||
|
#include "LuaState.hpp"
|
||||||
#include "../scripting.hpp"
|
#include "../scripting.hpp"
|
||||||
#include "../../../content/Content.hpp"
|
#include "../../../content/Content.hpp"
|
||||||
#include "../../../items/ItemDef.hpp"
|
#include "../../../items/ItemDef.hpp"
|
||||||
|
|
||||||
|
namespace scripting {
|
||||||
|
extern lua::LuaState* state;
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace scripting;
|
||||||
|
|
||||||
static int l_item_name(lua_State* L) {
|
static int l_item_name(lua_State* L) {
|
||||||
auto indices = scripting::content->getIndices();
|
auto indices = scripting::content->getIndices();
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Number id = lua_tointeger(L, 1);
|
||||||
if (id < 0 || size_t(id) >= indices->countItemDefs()) {
|
if (static_cast<size_t>(id) >= indices->countItemDefs()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto def = indices->getItemDef(id);
|
auto def = indices->getItemDef(id);
|
||||||
@ -16,14 +23,14 @@ static int l_item_name(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_item_index(lua_State* L) {
|
static int l_item_index(lua_State* L) {
|
||||||
auto name = lua_tostring(L, 1);
|
auto name = scripting::state->requireString(1);
|
||||||
lua_pushinteger(L, scripting::content->requireItem(name).rt.id);
|
lua_pushinteger(L, scripting::content->requireItem(name).rt.id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_item_stack_size(lua_State* L) {
|
static int l_item_stack_size(lua_State* L) {
|
||||||
auto indices = scripting::content->getIndices();
|
auto indices = scripting::content->getIndices();
|
||||||
lua::luaint id = lua_tointeger(L, 1);
|
lua_Integer id = lua_tointeger(L, 1);
|
||||||
if (id < 0 || size_t(id) >= indices->countItemDefs()) {
|
if (id < 0 || size_t(id) >= indices->countItemDefs()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,10 +9,15 @@
|
|||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
|
inline std::shared_ptr<Player> get_player(lua_State* L, int idx) {
|
||||||
|
return scripting::level->getObject<Player>(lua_tointeger(L, idx));
|
||||||
|
}
|
||||||
|
|
||||||
static int l_player_get_pos(lua_State* L) {
|
static int l_player_get_pos(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
if (!player) {
|
||||||
if (!player) return 0;
|
return 0;
|
||||||
|
}
|
||||||
glm::vec3 pos = player->hitbox->position;
|
glm::vec3 pos = player->hitbox->position;
|
||||||
lua_pushnumber(L, pos.x);
|
lua_pushnumber(L, pos.x);
|
||||||
lua_pushnumber(L, pos.y);
|
lua_pushnumber(L, pos.y);
|
||||||
@ -21,19 +26,22 @@ static int l_player_get_pos(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_set_pos(lua_State* L) {
|
static int l_player_set_pos(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
lua::luanumber x = lua_tonumber(L, 2);
|
if (!player) {
|
||||||
lua::luanumber y = lua_tonumber(L, 3);
|
return 0;
|
||||||
lua::luanumber z = lua_tonumber(L, 4);
|
}
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
auto x = lua_tonumber(L, 2);
|
||||||
if (player) player->hitbox->position = glm::vec3(x, y, z);
|
auto y = lua_tonumber(L, 3);
|
||||||
|
auto z = lua_tonumber(L, 4);
|
||||||
|
player->hitbox->position = glm::vec3(x, y, z);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_get_vel(lua_State* L) {
|
static int l_player_get_vel(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
if (!player) {
|
||||||
if (!player) return 0;
|
return 0;
|
||||||
|
}
|
||||||
glm::vec3 vel = player->hitbox->velocity;
|
glm::vec3 vel = player->hitbox->velocity;
|
||||||
lua_pushnumber(L, vel.x);
|
lua_pushnumber(L, vel.x);
|
||||||
lua_pushnumber(L, vel.y);
|
lua_pushnumber(L, vel.y);
|
||||||
@ -42,19 +50,22 @@ static int l_player_get_vel(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_set_vel(lua_State* L) {
|
static int l_player_set_vel(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
lua::luanumber x = lua_tonumber(L, 2);
|
if (!player) {
|
||||||
lua::luanumber y = lua_tonumber(L, 3);
|
return 0;
|
||||||
lua::luanumber z = lua_tonumber(L, 4);
|
}
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
auto x = lua_tonumber(L, 2);
|
||||||
if (player) player->hitbox->velocity = glm::vec3(x, y, z);
|
auto y = lua_tonumber(L, 3);
|
||||||
|
auto z = lua_tonumber(L, 4);
|
||||||
|
player->hitbox->velocity = glm::vec3(x, y, z);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_get_rot(lua_State* L) {
|
static int l_player_get_rot(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
if (!player) {
|
||||||
if (!player) return 0;
|
return 0;
|
||||||
|
}
|
||||||
glm::vec2 rot = player->cam;
|
glm::vec2 rot = player->cam;
|
||||||
lua_pushnumber(L, rot.x);
|
lua_pushnumber(L, rot.x);
|
||||||
lua_pushnumber(L, rot.y);
|
lua_pushnumber(L, rot.y);
|
||||||
@ -62,11 +73,12 @@ static int l_player_get_rot(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_set_rot(lua_State* L) {
|
static int l_player_set_rot(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
if (!player) {
|
||||||
if (!player) return 0;
|
return 0;
|
||||||
lua::luanumber x = lua_tonumber(L, 2);
|
}
|
||||||
lua::luanumber y = lua_tonumber(L, 3);
|
auto x = lua_tonumber(L, 2);
|
||||||
|
auto y = lua_tonumber(L, 3);
|
||||||
glm::vec2& cam = player->cam;
|
glm::vec2& cam = player->cam;
|
||||||
cam.x = x;
|
cam.x = x;
|
||||||
cam.y = y;
|
cam.y = y;
|
||||||
@ -74,14 +86,45 @@ static int l_player_set_rot(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int l_player_get_inv(lua_State* L) {
|
static int l_player_get_inv(lua_State* L) {
|
||||||
int playerid = lua_tointeger(L, 1);
|
auto player = get_player(L, 1);
|
||||||
auto player = scripting::level->getObject<Player>(playerid);
|
if (!player) {
|
||||||
if (!player) return 0;
|
return 0;
|
||||||
|
}
|
||||||
lua_pushinteger(L, player->getInventory()->getId());
|
lua_pushinteger(L, player->getInventory()->getId());
|
||||||
lua_pushinteger(L, player->getChosenSlot());
|
lua_pushinteger(L, player->getChosenSlot());
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int l_player_is_flight(lua_State* L) {
|
||||||
|
if (auto player = get_player(L, 1)) {
|
||||||
|
lua_pushboolean(L, player->isFlight());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int l_player_set_flight(lua_State* L) {
|
||||||
|
if (auto player = get_player(L, 1)) {
|
||||||
|
player->setFlight(lua_toboolean(L, 2));
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int l_player_is_noclip(lua_State* L) {
|
||||||
|
if (auto player = get_player(L, 1)) {
|
||||||
|
lua_pushboolean(L, player->isNoclip());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int l_player_set_noclip(lua_State* L) {
|
||||||
|
if (auto player = get_player(L, 1)) {
|
||||||
|
player->setNoclip(lua_toboolean(L, 2));
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const luaL_Reg playerlib [] = {
|
const luaL_Reg playerlib [] = {
|
||||||
{"get_pos", lua_wrap_errors<l_player_get_pos>},
|
{"get_pos", lua_wrap_errors<l_player_get_pos>},
|
||||||
{"set_pos", lua_wrap_errors<l_player_set_pos>},
|
{"set_pos", lua_wrap_errors<l_player_set_pos>},
|
||||||
@ -90,5 +133,9 @@ const luaL_Reg playerlib [] = {
|
|||||||
{"get_rot", lua_wrap_errors<l_player_get_rot>},
|
{"get_rot", lua_wrap_errors<l_player_get_rot>},
|
||||||
{"set_rot", lua_wrap_errors<l_player_set_rot>},
|
{"set_rot", lua_wrap_errors<l_player_set_rot>},
|
||||||
{"get_inventory", lua_wrap_errors<l_player_get_inv>},
|
{"get_inventory", lua_wrap_errors<l_player_get_inv>},
|
||||||
|
{"is_flight", lua_wrap_errors<l_player_is_flight>},
|
||||||
|
{"set_flight", lua_wrap_errors<l_player_set_flight>},
|
||||||
|
{"is_noclip", lua_wrap_errors<l_player_is_noclip>},
|
||||||
|
{"set_noclip", lua_wrap_errors<l_player_set_noclip>},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,14 +7,14 @@
|
|||||||
#else
|
#else
|
||||||
#include <lua.hpp>
|
#include <lua.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef LUAJIT_VERSION
|
||||||
|
#error LuaJIT required
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
|
||||||
namespace lua {
|
|
||||||
using luaint = lua_Integer;
|
|
||||||
using luanumber = lua_Number;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <lua_CFunction func> int lua_wrap_errors(lua_State *L) {
|
template <lua_CFunction func> int lua_wrap_errors(lua_State *L) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
namespace lua {
|
namespace lua {
|
||||||
inline int pushivec3(lua_State* L, luaint x, luaint y, luaint z) {
|
inline int pushivec3(lua_State* L, lua_Integer x, lua_Integer y, lua_Integer z) {
|
||||||
lua_pushinteger(L, x);
|
lua_pushinteger(L, x);
|
||||||
lua_pushinteger(L, y);
|
lua_pushinteger(L, y);
|
||||||
lua_pushinteger(L, z);
|
lua_pushinteger(L, z);
|
||||||
@ -100,9 +100,9 @@ namespace lua {
|
|||||||
throw std::runtime_error("value must be an array of two numbers");
|
throw std::runtime_error("value must be an array of two numbers");
|
||||||
}
|
}
|
||||||
lua_rawgeti(L, -1, 1);
|
lua_rawgeti(L, -1, 1);
|
||||||
lua::luanumber x = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number x = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_rawgeti(L, -1, 2);
|
lua_rawgeti(L, -1, 2);
|
||||||
lua::luanumber y = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number y = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
return glm::vec2(x, y);
|
return glm::vec2(x, y);
|
||||||
}
|
}
|
||||||
@ -113,13 +113,13 @@ namespace lua {
|
|||||||
throw std::runtime_error("RGBA array required");
|
throw std::runtime_error("RGBA array required");
|
||||||
}
|
}
|
||||||
lua_rawgeti(L, -1, 1);
|
lua_rawgeti(L, -1, 1);
|
||||||
lua::luanumber r = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number r = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_rawgeti(L, -1, 2);
|
lua_rawgeti(L, -1, 2);
|
||||||
lua::luanumber g = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number g = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_rawgeti(L, -1, 3);
|
lua_rawgeti(L, -1, 3);
|
||||||
lua::luanumber b = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number b = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_rawgeti(L, -1, 4);
|
lua_rawgeti(L, -1, 4);
|
||||||
lua::luanumber a = lua_tonumber(L, -1); lua_pop(L, 1);
|
lua_Number a = lua_tonumber(L, -1); lua_pop(L, 1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
return glm::vec4(r/255, g/255, b/255, a/255);
|
return glm::vec4(r/255, g/255, b/255, a/255);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -137,7 +137,8 @@ doublesupplier scripting::create_number_supplier(
|
|||||||
if (state->isfunction(-1)) {
|
if (state->isfunction(-1)) {
|
||||||
state->callNoThrow(0);
|
state->callNoThrow(0);
|
||||||
}
|
}
|
||||||
lua::luanumber x = state->tonumber(-1); state->pop();
|
auto x = state->tonumber(-1);
|
||||||
|
state->pop();
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
return 0.0;
|
return 0.0;
|
||||||
@ -169,8 +170,8 @@ vec2supplier scripting::create_vec2_supplier(
|
|||||||
if (state->isfunction(-1)) {
|
if (state->isfunction(-1)) {
|
||||||
state->callNoThrow(0);
|
state->callNoThrow(0);
|
||||||
}
|
}
|
||||||
lua::luanumber y = state->tonumber(-1); state->pop();
|
auto y = state->tonumber(-1); state->pop();
|
||||||
lua::luanumber x = state->tonumber(-1); state->pop();
|
auto x = state->tonumber(-1); state->pop();
|
||||||
return glm::vec2(x, y);
|
return glm::vec2(x, y);
|
||||||
}
|
}
|
||||||
return glm::vec2(0, 0);
|
return glm::vec2(0, 0);
|
||||||
|
|||||||
@ -167,6 +167,22 @@ float Player::getSpeed() const {
|
|||||||
return speed;
|
return speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Player::isFlight() const {
|
||||||
|
return flight;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::setFlight(bool flag) {
|
||||||
|
this->flight = flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Player::isNoclip() const {
|
||||||
|
return noclip;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::setNoclip(bool flag) {
|
||||||
|
this->noclip = flag;
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<Inventory> Player::getInventory() const {
|
std::shared_ptr<Inventory> Player::getInventory() const {
|
||||||
return inventory;
|
return inventory;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,12 +37,12 @@ class Player : public Object, public Serializable {
|
|||||||
int chosenSlot;
|
int chosenSlot;
|
||||||
glm::vec3 spawnpoint {};
|
glm::vec3 spawnpoint {};
|
||||||
std::shared_ptr<Inventory> inventory;
|
std::shared_ptr<Inventory> inventory;
|
||||||
|
bool flight = false;
|
||||||
|
bool noclip = false;
|
||||||
public:
|
public:
|
||||||
std::shared_ptr<Camera> camera, spCamera, tpCamera;
|
std::shared_ptr<Camera> camera, spCamera, tpCamera;
|
||||||
std::shared_ptr<Camera> currentCamera;
|
std::shared_ptr<Camera> currentCamera;
|
||||||
std::unique_ptr<Hitbox> hitbox;
|
std::unique_ptr<Hitbox> hitbox;
|
||||||
bool flight = false;
|
|
||||||
bool noclip = false;
|
|
||||||
bool debug = false;
|
bool debug = false;
|
||||||
voxel selectedVoxel {0, 0};
|
voxel selectedVoxel {0, 0};
|
||||||
glm::vec2 cam {};
|
glm::vec2 cam {};
|
||||||
@ -60,6 +60,12 @@ public:
|
|||||||
int getChosenSlot() const;
|
int getChosenSlot() const;
|
||||||
float getSpeed() const;
|
float getSpeed() const;
|
||||||
|
|
||||||
|
bool isFlight() const;
|
||||||
|
void setFlight(bool flag);
|
||||||
|
|
||||||
|
bool isNoclip() const;
|
||||||
|
void setNoclip(bool flag);
|
||||||
|
|
||||||
std::shared_ptr<Inventory> getInventory() const;
|
std::shared_ptr<Inventory> getInventory() const;
|
||||||
|
|
||||||
void setSpawnPoint(glm::vec3 point);
|
void setSpawnPoint(glm::vec3 point);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user