|
|
@@ -47,20 +47,8 @@ __reduce__(PyObject *self) const {
|
|
|
DTool_CreatePyInstance((void *)target, Dtool_NodePath, false, true));
|
|
|
}
|
|
|
|
|
|
- // Call the write_datagram method via Python, since it's not a virtual method
|
|
|
- // on the C++ end.
|
|
|
- PyObject *method_name = PyUnicode_FromString("write_datagram");
|
|
|
-
|
|
|
Datagram dg;
|
|
|
- PyObject *destination = DTool_CreatePyInstance(&dg, Dtool_Datagram, false, false);
|
|
|
-
|
|
|
- PyObject *retval = PyObject_CallMethodOneArg(self, method_name, destination);
|
|
|
- Py_DECREF(method_name);
|
|
|
- Py_DECREF(destination);
|
|
|
- if (retval == nullptr) {
|
|
|
- return nullptr;
|
|
|
- }
|
|
|
- Py_DECREF(retval);
|
|
|
+ _this->write_datagram(dg);
|
|
|
|
|
|
const char *data = (const char *)dg.get_data();
|
|
|
Py_ssize_t size = dg.get_length();
|
|
|
@@ -73,21 +61,10 @@ __reduce__(PyObject *self) const {
|
|
|
*/
|
|
|
void Extension<CollisionHandlerPhysical>::
|
|
|
__setstate__(PyObject *self, vector_uchar data, PyObject *nodepaths) {
|
|
|
- extern struct Dtool_PyTypedObject Dtool_DatagramIterator;
|
|
|
-
|
|
|
- // Call the read_datagram method via Python, since it's not a virtual method
|
|
|
- // on the C++ end.
|
|
|
- PyObject *method_name = PyUnicode_FromString("read_datagram");
|
|
|
-
|
|
|
{
|
|
|
Datagram dg(std::move(data));
|
|
|
DatagramIterator scan(dg);
|
|
|
- PyObject *source = DTool_CreatePyInstance(&scan, Dtool_DatagramIterator, false, false);
|
|
|
-
|
|
|
- PyObject *retval = PyObject_CallMethodOneArg(self, method_name, source);
|
|
|
- Py_DECREF(method_name);
|
|
|
- Py_DECREF(source);
|
|
|
- Py_XDECREF(retval);
|
|
|
+ _this->read_datagram(scan);
|
|
|
}
|
|
|
|
|
|
PyObject *center = PyTuple_GET_ITEM(nodepaths, 0);
|