mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-14 16:09:06 +07:00
bind core debug, engine and input
This commit is contained in:
@@ -28,6 +28,10 @@ namespace e2d
|
||||
bool is_button_just_pressed(mouse_button btn) const noexcept;
|
||||
bool is_button_just_released(mouse_button btn) const noexcept;
|
||||
|
||||
vector<mouse_button> pressed_buttons() const;
|
||||
vector<mouse_button> just_pressed_buttons() const;
|
||||
vector<mouse_button> just_released_buttons() const;
|
||||
|
||||
void extract_pressed_buttons(vector<mouse_button>& dst) const;
|
||||
void extract_just_pressed_buttons(vector<mouse_button>& dst) const;
|
||||
void extract_just_released_buttons(vector<mouse_button>& dst) const;
|
||||
@@ -53,6 +57,10 @@ namespace e2d
|
||||
bool is_key_just_pressed(keyboard_key key) const noexcept;
|
||||
bool is_key_just_released(keyboard_key key) const noexcept;
|
||||
|
||||
vector<keyboard_key> pressed_keys() const;
|
||||
vector<keyboard_key> just_pressed_keys() const;
|
||||
vector<keyboard_key> just_released_keys() const;
|
||||
|
||||
void extract_pressed_keys(vector<keyboard_key>& dst) const;
|
||||
void extract_just_pressed_keys(vector<keyboard_key>& dst) const;
|
||||
void extract_just_released_keys(vector<keyboard_key>& dst) const;
|
||||
|
||||
@@ -182,6 +182,24 @@ namespace e2d
|
||||
return state_->just_released.test(index);
|
||||
}
|
||||
|
||||
vector<mouse_button> mouse::pressed_buttons() const {
|
||||
vector<mouse_button> buttons;
|
||||
extract_pressed_buttons(buttons);
|
||||
return buttons;
|
||||
}
|
||||
|
||||
vector<mouse_button> mouse::just_pressed_buttons() const {
|
||||
vector<mouse_button> buttons;
|
||||
extract_just_pressed_buttons(buttons);
|
||||
return buttons;
|
||||
}
|
||||
|
||||
vector<mouse_button> mouse::just_released_buttons() const {
|
||||
vector<mouse_button> buttons;
|
||||
extract_just_released_buttons(buttons);
|
||||
return buttons;
|
||||
}
|
||||
|
||||
void mouse::extract_pressed_buttons(vector<mouse_button>& dst) const {
|
||||
std::lock_guard<std::mutex> guard(state_->mutex);
|
||||
for ( std::size_t i = 0; i < state_->pressed.size(); ++i ) {
|
||||
@@ -260,6 +278,24 @@ namespace e2d
|
||||
return state_->just_released.test(index);
|
||||
}
|
||||
|
||||
vector<keyboard_key> keyboard::pressed_keys() const {
|
||||
vector<keyboard_key> keys;
|
||||
extract_pressed_keys(keys);
|
||||
return keys;
|
||||
}
|
||||
|
||||
vector<keyboard_key> keyboard::just_pressed_keys() const {
|
||||
vector<keyboard_key> keys;
|
||||
extract_just_pressed_keys(keys);
|
||||
return keys;
|
||||
}
|
||||
|
||||
vector<keyboard_key> keyboard::just_released_keys() const {
|
||||
vector<keyboard_key> keys;
|
||||
extract_just_released_keys(keys);
|
||||
return keys;
|
||||
}
|
||||
|
||||
void keyboard::extract_pressed_keys(vector<keyboard_key>& dst) const {
|
||||
std::lock_guard<std::mutex> guard(state_->mutex);
|
||||
for ( std::size_t i = 0; i < state_->pressed.size(); ++i ) {
|
||||
|
||||
@@ -6,10 +6,232 @@
|
||||
|
||||
#include "bindings.hpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
using namespace e2d;
|
||||
|
||||
void bind_debug(sol::state& l) {
|
||||
l.new_usertype<debug>("debug",
|
||||
"min_level", sol::property(&debug::min_level, &debug::set_min_level),
|
||||
"log", [](debug& d, debug::level l, const char* s){ d.log(l, s); },
|
||||
"trace", [](debug& d, const char* s){ d.trace(s); },
|
||||
"warning", [](debug& d, const char* s){ d.warning(s); },
|
||||
"error", [](debug& d, const char* s){ d.error(s); },
|
||||
"fatal", [](debug& d, const char* s){ d.fatal(s); }
|
||||
);
|
||||
|
||||
#define DEBUG_LEVEL_PAIR(x) {#x, debug::level::x},
|
||||
l.new_enum<debug::level>("debug_level", {
|
||||
DEBUG_LEVEL_PAIR(trace)
|
||||
DEBUG_LEVEL_PAIR(warning)
|
||||
DEBUG_LEVEL_PAIR(error)
|
||||
DEBUG_LEVEL_PAIR(fatal)
|
||||
});
|
||||
#undef DEBUG_LEVEL_PAIR
|
||||
}
|
||||
|
||||
void bind_engine(sol::state& l) {
|
||||
l.new_usertype<engine>("engine",
|
||||
"time", sol::property(&engine::time),
|
||||
"delta_time", sol::property(&engine::delta_time),
|
||||
"frame_rate", sol::property(&engine::frame_rate),
|
||||
"frame_count", sol::property(&engine::frame_count),
|
||||
"realtime_time", sol::property(&engine::realtime_time)
|
||||
);
|
||||
}
|
||||
|
||||
void bind_input(sol::state& l) {
|
||||
l.new_usertype<input>("input",
|
||||
"mouse", sol::property(&input::mouse),
|
||||
"keyboard", sol::property(&input::keyboard)
|
||||
);
|
||||
|
||||
l.new_usertype<mouse>("mouse",
|
||||
"cursor_pos", sol::property(&mouse::cursor_pos),
|
||||
"scroll_delta", sol::property(&mouse::scroll_delta),
|
||||
|
||||
"is_any_button_pressed", sol::property(&mouse::is_any_button_pressed),
|
||||
"is_any_button_just_pressed", sol::property(&mouse::is_any_button_just_pressed),
|
||||
"is_any_button_just_released", sol::property(&mouse::is_any_button_just_released),
|
||||
|
||||
"is_button_pressed", &mouse::is_button_pressed,
|
||||
"is_button_just_pressed", &mouse::is_button_just_pressed,
|
||||
"is_button_just_released", &mouse::is_button_just_released,
|
||||
|
||||
"pressed_buttons", sol::property(&mouse::pressed_buttons),
|
||||
"just_pressed_buttons", sol::property(&mouse::pressed_buttons),
|
||||
"just_released_buttons", sol::property(&mouse::just_released_buttons)
|
||||
);
|
||||
|
||||
l.new_usertype<keyboard>("keyboard",
|
||||
"input_text", sol::property([](const keyboard& k){ return make_utf8(k.input_text()); }),
|
||||
|
||||
"is_any_key_pressed", sol::property(&keyboard::is_any_key_pressed),
|
||||
"is_any_key_just_pressed", sol::property(&keyboard::is_any_key_just_pressed),
|
||||
"is_any_key_just_released", sol::property(&keyboard::is_any_key_just_released),
|
||||
|
||||
"is_key_pressed", &keyboard::is_key_pressed,
|
||||
"is_key_just_pressed", &keyboard::is_key_just_pressed,
|
||||
"is_key_just_released", &keyboard::is_key_just_released,
|
||||
|
||||
"pressed_keys", sol::property(&keyboard::pressed_keys),
|
||||
"just_pressed_keys", sol::property(&keyboard::pressed_keys),
|
||||
"just_released_keys", sol::property(&keyboard::just_released_keys)
|
||||
);
|
||||
|
||||
#define MOUSE_BUTTON_PAIR(x) {#x, mouse_button::x},
|
||||
l.new_enum<mouse_button>("mouse_button", {
|
||||
MOUSE_BUTTON_PAIR(left)
|
||||
MOUSE_BUTTON_PAIR(right)
|
||||
MOUSE_BUTTON_PAIR(middle)
|
||||
MOUSE_BUTTON_PAIR(x1)
|
||||
MOUSE_BUTTON_PAIR(x2)
|
||||
});
|
||||
#undef MOUSE_BUTTON_PAIR
|
||||
|
||||
#define KEYBOARD_KEY_PAIR(x) {#x, keyboard_key::x},
|
||||
l.new_enum<keyboard_key>("keyboard_key", {
|
||||
KEYBOARD_KEY_PAIR(_0)
|
||||
KEYBOARD_KEY_PAIR(_1)
|
||||
KEYBOARD_KEY_PAIR(_2)
|
||||
KEYBOARD_KEY_PAIR(_3)
|
||||
KEYBOARD_KEY_PAIR(_4)
|
||||
KEYBOARD_KEY_PAIR(_5)
|
||||
KEYBOARD_KEY_PAIR(_6)
|
||||
KEYBOARD_KEY_PAIR(_7)
|
||||
KEYBOARD_KEY_PAIR(_8)
|
||||
KEYBOARD_KEY_PAIR(_9)
|
||||
|
||||
KEYBOARD_KEY_PAIR(a)
|
||||
KEYBOARD_KEY_PAIR(b)
|
||||
KEYBOARD_KEY_PAIR(c)
|
||||
KEYBOARD_KEY_PAIR(d)
|
||||
KEYBOARD_KEY_PAIR(e)
|
||||
KEYBOARD_KEY_PAIR(f)
|
||||
KEYBOARD_KEY_PAIR(g)
|
||||
KEYBOARD_KEY_PAIR(h)
|
||||
KEYBOARD_KEY_PAIR(i)
|
||||
KEYBOARD_KEY_PAIR(j)
|
||||
KEYBOARD_KEY_PAIR(k)
|
||||
KEYBOARD_KEY_PAIR(l)
|
||||
KEYBOARD_KEY_PAIR(m)
|
||||
KEYBOARD_KEY_PAIR(n)
|
||||
KEYBOARD_KEY_PAIR(o)
|
||||
KEYBOARD_KEY_PAIR(p)
|
||||
KEYBOARD_KEY_PAIR(q)
|
||||
KEYBOARD_KEY_PAIR(r)
|
||||
KEYBOARD_KEY_PAIR(s)
|
||||
KEYBOARD_KEY_PAIR(t)
|
||||
KEYBOARD_KEY_PAIR(u)
|
||||
KEYBOARD_KEY_PAIR(v)
|
||||
KEYBOARD_KEY_PAIR(w)
|
||||
KEYBOARD_KEY_PAIR(x)
|
||||
KEYBOARD_KEY_PAIR(y)
|
||||
KEYBOARD_KEY_PAIR(z)
|
||||
|
||||
KEYBOARD_KEY_PAIR(f1)
|
||||
KEYBOARD_KEY_PAIR(f2)
|
||||
KEYBOARD_KEY_PAIR(f3)
|
||||
KEYBOARD_KEY_PAIR(f4)
|
||||
KEYBOARD_KEY_PAIR(f5)
|
||||
KEYBOARD_KEY_PAIR(f6)
|
||||
KEYBOARD_KEY_PAIR(f7)
|
||||
KEYBOARD_KEY_PAIR(f8)
|
||||
KEYBOARD_KEY_PAIR(f9)
|
||||
KEYBOARD_KEY_PAIR(f10)
|
||||
KEYBOARD_KEY_PAIR(f11)
|
||||
KEYBOARD_KEY_PAIR(f12)
|
||||
KEYBOARD_KEY_PAIR(f13)
|
||||
KEYBOARD_KEY_PAIR(f14)
|
||||
KEYBOARD_KEY_PAIR(f15)
|
||||
KEYBOARD_KEY_PAIR(f16)
|
||||
KEYBOARD_KEY_PAIR(f17)
|
||||
KEYBOARD_KEY_PAIR(f18)
|
||||
KEYBOARD_KEY_PAIR(f19)
|
||||
KEYBOARD_KEY_PAIR(f20)
|
||||
KEYBOARD_KEY_PAIR(f21)
|
||||
KEYBOARD_KEY_PAIR(f22)
|
||||
KEYBOARD_KEY_PAIR(f23)
|
||||
KEYBOARD_KEY_PAIR(f24)
|
||||
KEYBOARD_KEY_PAIR(f25)
|
||||
|
||||
KEYBOARD_KEY_PAIR(minus)
|
||||
KEYBOARD_KEY_PAIR(equal)
|
||||
KEYBOARD_KEY_PAIR(backspace)
|
||||
KEYBOARD_KEY_PAIR(section_sign)
|
||||
KEYBOARD_KEY_PAIR(grave_accent)
|
||||
|
||||
KEYBOARD_KEY_PAIR(lbracket)
|
||||
KEYBOARD_KEY_PAIR(rbracket)
|
||||
KEYBOARD_KEY_PAIR(semicolon)
|
||||
KEYBOARD_KEY_PAIR(apostrophe)
|
||||
KEYBOARD_KEY_PAIR(backslash)
|
||||
|
||||
KEYBOARD_KEY_PAIR(comma)
|
||||
KEYBOARD_KEY_PAIR(period)
|
||||
KEYBOARD_KEY_PAIR(slash)
|
||||
|
||||
KEYBOARD_KEY_PAIR(escape)
|
||||
KEYBOARD_KEY_PAIR(tab)
|
||||
KEYBOARD_KEY_PAIR(caps_lock)
|
||||
KEYBOARD_KEY_PAIR(space)
|
||||
KEYBOARD_KEY_PAIR(enter)
|
||||
|
||||
KEYBOARD_KEY_PAIR(lshift)
|
||||
KEYBOARD_KEY_PAIR(rshift)
|
||||
KEYBOARD_KEY_PAIR(lcontrol)
|
||||
KEYBOARD_KEY_PAIR(rcontrol)
|
||||
KEYBOARD_KEY_PAIR(lalt)
|
||||
KEYBOARD_KEY_PAIR(ralt)
|
||||
KEYBOARD_KEY_PAIR(lsuper)
|
||||
KEYBOARD_KEY_PAIR(rsuper)
|
||||
KEYBOARD_KEY_PAIR(menu)
|
||||
|
||||
KEYBOARD_KEY_PAIR(print_screen)
|
||||
KEYBOARD_KEY_PAIR(scroll_lock)
|
||||
KEYBOARD_KEY_PAIR(pause)
|
||||
|
||||
KEYBOARD_KEY_PAIR(insert)
|
||||
KEYBOARD_KEY_PAIR(del)
|
||||
KEYBOARD_KEY_PAIR(home)
|
||||
KEYBOARD_KEY_PAIR(end)
|
||||
KEYBOARD_KEY_PAIR(page_up)
|
||||
KEYBOARD_KEY_PAIR(page_down)
|
||||
|
||||
KEYBOARD_KEY_PAIR(left)
|
||||
KEYBOARD_KEY_PAIR(up)
|
||||
KEYBOARD_KEY_PAIR(right)
|
||||
KEYBOARD_KEY_PAIR(down)
|
||||
|
||||
KEYBOARD_KEY_PAIR(kp_0)
|
||||
KEYBOARD_KEY_PAIR(kp_1)
|
||||
KEYBOARD_KEY_PAIR(kp_2)
|
||||
KEYBOARD_KEY_PAIR(kp_3)
|
||||
KEYBOARD_KEY_PAIR(kp_4)
|
||||
KEYBOARD_KEY_PAIR(kp_5)
|
||||
KEYBOARD_KEY_PAIR(kp_6)
|
||||
KEYBOARD_KEY_PAIR(kp_7)
|
||||
KEYBOARD_KEY_PAIR(kp_8)
|
||||
KEYBOARD_KEY_PAIR(kp_9)
|
||||
|
||||
KEYBOARD_KEY_PAIR(kp_num_lock)
|
||||
KEYBOARD_KEY_PAIR(kp_divide)
|
||||
KEYBOARD_KEY_PAIR(kp_multiply)
|
||||
KEYBOARD_KEY_PAIR(kp_subtract)
|
||||
KEYBOARD_KEY_PAIR(kp_add)
|
||||
KEYBOARD_KEY_PAIR(kp_enter)
|
||||
KEYBOARD_KEY_PAIR(kp_equal)
|
||||
KEYBOARD_KEY_PAIR(kp_decimal)
|
||||
});
|
||||
#undef KEYBOARD_KEY_PAIR
|
||||
}
|
||||
}
|
||||
|
||||
namespace e2d::bindings
|
||||
{
|
||||
void bind_core(sol::state& l) {
|
||||
//TODO(BlackMat): implme
|
||||
E2D_UNUSED(l);
|
||||
bind_debug(l);
|
||||
bind_engine(l);
|
||||
bind_input(l);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user