blueloveTH 2 tahun lalu
induk
melakukan
e59ff4dfdc
2 mengubah file dengan 16 tambahan dan 7 penghapusan
  1. 1 7
      include/pocketpy/linalg.h
  2. 15 0
      src/linalg.cpp

+ 1 - 7
include/pocketpy/linalg.h

@@ -336,13 +336,7 @@ template<> inline Vec3 _py_cast<Vec3>(VM* vm, PyObject* obj) { return _CAST(PyVe
 template<> inline Vec4 _py_cast<Vec4>(VM* vm, PyObject* obj) { return _CAST(PyVec4&, obj); }
 template<> inline Mat3x3 _py_cast<Mat3x3>(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_<PyMat3x3>) <= 64);
 static_assert(std::is_trivially_copyable<PyVec2>::value);

+ 15 - 0
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