载入中...
搜索中...
未找到
Mouse.cpp
浏览该文件的文档.
1#include "mouse/Mouse.h"
2#include "mouse/sdl/Mouse.h"
3#include <simplesquirrel/simplesquirrel.hpp>
4#include <vector>
5
6namespace eve::mouse {
7
9
11
12
13void Mouse::expose(ssq::Table& table) {
14 auto cls = table.addClass(name, Mouse::create, false);
15 expose(cls);
16}
17
18void Mouse::expose(ssq::Class& cls) {
19 cls.addFunc("getName", &Mouse::getName);
20 // Bind as float: SSQ/Squirrel treat C++ double as userdata, which breaks script arith.
21 cls.addFunc("getX", [](Mouse *m) -> float { return m ? float(m->getX()) : 0.f; });
22 cls.addFunc("getY", [](Mouse *m) -> float { return m ? float(m->getY()) : 0.f; });
23 cls.addFunc("getWheelX", &Mouse::getWheelX);
24 cls.addFunc("getWheelY", &Mouse::getWheelY);
25 cls.addFunc("setX", [](Mouse *m, float x) { if (m) m->setX(x); });
26 cls.addFunc("setY", [](Mouse *m, float y) { if (m) m->setY(y); });
27 cls.addFunc("setPosition", [](Mouse *m, float x, float y) { if (m) m->setPosition(x, y); });
28 cls.addFunc("isDown", [](Mouse *m, int button) -> bool {
29 if (!m) return false;
30 return m->isDown(std::vector<int>{button});
31 });
32 cls.addFunc("setVisible", &Mouse::setVisible);
33 cls.addFunc("isVisible", &Mouse::isVisible);
34 cls.addFunc("setGrabbed", &Mouse::setGrabbed);
35 cls.addFunc("isGrabbed", &Mouse::isGrabbed);
36 cls.addFunc("setRelativeMode", &Mouse::setRelativeMode);
37 cls.addFunc("getRelativeMode", &Mouse::getRelativeMode);
38 cls.addFunc("getMovementX", [](Mouse *m) -> float { return m ? float(m->getMovementX()) : 0.f; });
39 cls.addFunc("getMovementY", [](Mouse *m) -> float { return m ? float(m->getMovementY()) : 0.f; });
40}
41
42} // namespace eve::mouse
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
HSQOBJECT cls
Definition ECS.cpp:21
std::string name
#define Module_IMPL(ModuleName, newExpr)
Definition Module.h:26
float m[16]
virtual std::string getName() const =0
Returns the name.
Queries and manipulates the mouse cursor; creates custom cursors.
Definition Mouse.h:20
virtual bool getRelativeMode() const =0
True when relative mouse mode is active.
float getWheelY() const
Vertical scroll from the latest platform pump; event-thread read, non-consuming.
virtual ~Mouse()
Releases cursors owned by this module.
Definition Mouse.cpp:10
float getWheelX() const
Horizontal scroll from the latest platform pump; event-thread read, non-consuming.
virtual bool setRelativeMode(bool relative)=0
Enables relative mouse mode (hidden cursor, motion deltas).
virtual void setVisible(bool visible)=0
Shows or hides the OS cursor.
virtual bool isGrabbed() const =0
True when cursor grab is active.
virtual void setGrabbed(bool grab)=0
Confines the cursor to the window when grab is true.
virtual bool isVisible() const =0
True when the OS cursor is visible.
SDL mouse backend implementing eve::mouse::Mouse.
Definition Mouse.h:11
ControlEdit button(const char *label, float width=0.f, float height=0.f)
Shared immediate renderer for retained and EditorHost buttons.