From 17fa4add9a37f1f41c8c2fab0509360946f9a13d Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 5 Aug 2023 16:35:58 +0800 Subject: [PATCH] ... --- 3rd/box2d/include/box2d_bindings.hpp | 45 ++++++++++++++-------------- 3rd/box2d/src/box2d_Body.cpp | 8 ++--- 3rd/box2d/src/box2d_World.cpp | 8 ++--- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/3rd/box2d/include/box2d_bindings.hpp b/3rd/box2d/include/box2d_bindings.hpp index ada184a2..bf28697f 100644 --- a/3rd/box2d/include/box2d_bindings.hpp +++ b/3rd/box2d/include/box2d_bindings.hpp @@ -2,27 +2,26 @@ #include "box2d/b2_world.h" #include "box2d/box2d.h" +#include "pocketpy/common.h" #include "pocketpy/pocketpy.h" namespace pkpy{ - template<> - inline b2Vec2 py_cast(VM* vm, PyObject* obj){ - Vec2 v = py_cast(vm, obj); - return b2Vec2(v.x, v.y); - } - template<> - inline b2Vec2 _py_cast(VM* vm, PyObject* obj){ - Vec2 v = _py_cast(vm, obj); - return b2Vec2(v.x, v.y); - } - - inline PyObject* py_var(VM* vm, b2Vec2 v){ - return py_var(vm, Vec2(v.x, v.y)); - } +template<> +inline b2Vec2 py_cast(VM* vm, PyObject* obj){ + Vec2 v = py_cast(vm, obj); + return b2Vec2(v.x, v.y); } -using namespace pkpy; +template<> +inline b2Vec2 _py_cast(VM* vm, PyObject* obj){ + Vec2 v = _py_cast(vm, obj); + return b2Vec2(v.x, v.y); +} + +inline PyObject* py_var(VM* vm, b2Vec2 v){ + return py_var(vm, Vec2(v.x, v.y)); +} 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); - } -} \ No newline at end of file + +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 \ No newline at end of file diff --git a/3rd/box2d/src/box2d_Body.cpp b/3rd/box2d/src/box2d_Body.cpp index 9f80f8fa..56b38f70 100644 --- a/3rd/box2d/src/box2d_Body.cpp +++ b/3rd/box2d/src/box2d_Body.cpp @@ -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::_type(vm)); PyBody& body = _CAST(PyBody&, obj); b2BodyDef def; def.type = b2_dynamicBody; @@ -85,4 +84,5 @@ void PyBody::_register(VM* vm, PyObject* mod, PyObject* type){ }); } -} // namespace imbox2d \ No newline at end of file +} // namespace imbox2d +} // namespace pkpy \ No newline at end of file diff --git a/3rd/box2d/src/box2d_World.cpp b/3rd/box2d/src/box2d_World.cpp index 4acb0003..312fd3b0 100644 --- a/3rd/box2d/src/box2d_World.cpp +++ b/3rd/box2d/src/box2d_World.cpp @@ -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::_type(vm), vm); }); // gravity @@ -130,4 +129,5 @@ void PyWorld::_register(VM* vm, PyObject* mod, PyObject* type){ }); } -} // namespace imbox2d \ No newline at end of file +} // namespace imbox2d +} // namespace pkpy \ No newline at end of file