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