mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
...
This commit is contained in:
parent
65087068b2
commit
17fa4add9a
@ -2,9 +2,11 @@
|
||||
|
||||
#include "box2d/b2_world.h"
|
||||
#include "box2d/box2d.h"
|
||||
#include "pocketpy/common.h"
|
||||
#include "pocketpy/pocketpy.h"
|
||||
|
||||
namespace pkpy{
|
||||
|
||||
template<>
|
||||
inline b2Vec2 py_cast<b2Vec2>(VM* vm, PyObject* obj){
|
||||
Vec2 v = py_cast<Vec2>(vm, obj);
|
||||
@ -20,9 +22,6 @@ namespace pkpy{
|
||||
inline PyObject* py_var(VM* vm, b2Vec2 v){
|
||||
return py_var(vm, Vec2(v.x, v.y));
|
||||
}
|
||||
}
|
||||
|
||||
using namespace pkpy;
|
||||
|
||||
namespace imbox2d{
|
||||
|
||||
@ -99,7 +98,7 @@ struct PyBody{
|
||||
b2Fixture* fixture;
|
||||
PyObject* node_like;
|
||||
|
||||
PyBody() = default;
|
||||
PyBody(): body(nullptr), fixture(nullptr), node_like(nullptr){}
|
||||
|
||||
void _gc_mark() {
|
||||
PK_OBJ_MARK(node_like);
|
||||
@ -151,10 +150,10 @@ struct PyWorld {
|
||||
|
||||
} // namespace imbox2d
|
||||
|
||||
namespace pkpy{
|
||||
|
||||
inline void add_module_box2d(VM* vm){
|
||||
PyObject* mod = vm->new_module("box2d");
|
||||
imbox2d::PyBody::register_class(vm, mod);
|
||||
imbox2d::PyWorld::register_class(vm, mod);
|
||||
}
|
||||
}
|
||||
} // namespace pkpy
|
@ -3,8 +3,7 @@
|
||||
#include "box2d_bindings.hpp"
|
||||
#include "pocketpy/bindings.h"
|
||||
|
||||
using namespace pkpy;
|
||||
|
||||
namespace pkpy{
|
||||
namespace imbox2d{
|
||||
|
||||
void PyBody::_register(VM* vm, PyObject* mod, PyObject* type){
|
||||
@ -12,7 +11,7 @@ void PyBody::_register(VM* vm, PyObject* mod, PyObject* type){
|
||||
[](VM* vm, ArgsView args){
|
||||
PyWorld& world = CAST(PyWorld&, args[1]);
|
||||
PyObject* node = args[2];
|
||||
PyObject* obj = VAR_T(PyBody, PyBody());
|
||||
PyObject* obj = vm->heap.gcnew<PyBody>(PyBody::_type(vm));
|
||||
PyBody& body = _CAST(PyBody&, obj);
|
||||
b2BodyDef def;
|
||||
def.type = b2_dynamicBody;
|
||||
@ -86,3 +85,4 @@ void PyBody::_register(VM* vm, PyObject* mod, PyObject* type){
|
||||
}
|
||||
|
||||
} // namespace imbox2d
|
||||
} // namespace pkpy
|
@ -2,8 +2,7 @@
|
||||
#include "box2d/b2_world_callbacks.h"
|
||||
#include "box2d_bindings.hpp"
|
||||
|
||||
using namespace pkpy;
|
||||
|
||||
namespace pkpy{
|
||||
namespace imbox2d{
|
||||
|
||||
struct MyRayCastCallback: b2RayCastCallback{
|
||||
@ -44,7 +43,7 @@ PyWorld::PyWorld(VM* vm): world(b2Vec2(0, 0)), _contact_listener(vm), _debug_dra
|
||||
|
||||
void PyWorld::_register(VM* vm, PyObject* mod, PyObject* type){
|
||||
vm->bind(type, "__new__(cls)", [](VM* vm, ArgsView args){
|
||||
return VAR_T(PyWorld, PyWorld(vm));
|
||||
return vm->heap.gcnew<PyWorld>(PyWorld::_type(vm), vm);
|
||||
});
|
||||
|
||||
// gravity
|
||||
@ -131,3 +130,4 @@ void PyWorld::_register(VM* vm, PyObject* mod, PyObject* type){
|
||||
}
|
||||
|
||||
} // namespace imbox2d
|
||||
} // namespace pkpy
|
Loading…
x
Reference in New Issue
Block a user