diff --git a/include/pocketpy/linalg.h b/include/pocketpy/linalg.h index 496a5e6b..ed6bf4d9 100644 --- a/include/pocketpy/linalg.h +++ b/include/pocketpy/linalg.h @@ -336,13 +336,7 @@ template<> inline Vec3 _py_cast(VM* vm, PyObject* obj) { return _CAST(PyVe template<> inline Vec4 _py_cast(VM* vm, PyObject* obj) { return _CAST(PyVec4&, obj); } template<> inline Mat3x3 _py_cast(VM* vm, PyObject* obj) { return _CAST(PyMat3x3&, obj); } -inline void add_module_linalg(VM* vm){ - PyObject* linalg = vm->new_module("linalg"); - PyVec2::register_class(vm, linalg); - PyVec3::register_class(vm, linalg); - PyVec4::register_class(vm, linalg); - PyMat3x3::register_class(vm, linalg); -} +void add_module_linalg(VM* vm); static_assert(sizeof(Py_) <= 64); static_assert(std::is_trivially_copyable::value); diff --git a/src/linalg.cpp b/src/linalg.cpp index fb2d75ce..f7891785 100644 --- a/src/linalg.cpp +++ b/src/linalg.cpp @@ -411,4 +411,19 @@ namespace pkpy{ }); } + +void add_module_linalg(VM* vm){ + PyObject* linalg = vm->new_module("linalg"); + PyVec2::register_class(vm, linalg); + PyVec3::register_class(vm, linalg); + PyVec4::register_class(vm, linalg); + PyMat3x3::register_class(vm, linalg); + + PyObject* float_p = vm->_modules["c"]->attr("float_p"); + linalg->attr().set("vec2_p", float_p); + linalg->attr().set("vec3_p", float_p); + linalg->attr().set("vec4_p", float_p); + linalg->attr().set("mat3x3_p", float_p); +} + } // namespace pkpy \ No newline at end of file