Skip to content

Commit 0fcf734

Browse files
committed
Fix gen for no static methods
1 parent fb71f3b commit 0fcf734

File tree

3 files changed

+53
-7
lines changed

3 files changed

+53
-7
lines changed

PythonWrapperGenerator/gen_editor_wrapper.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,14 +459,19 @@ def make_method_code(self, method_info, _args, args_to_call):
459459
ret += self.__namespace + "::" + method_info["classname"] + "::"
460460
ret += method_info["name"] + "(" + args_to_call + ");\n"
461461
ret += " };\n"
462-
ret += " // args\n"
463-
for _arg in _args:
464-
ret += " " + _arg["type"] + " " + _arg["name"] + ";\n"
462+
if not method_info["static"]:
463+
ret += " " + self.__member_type + " unigine_object_ptr;\n"
464+
if len(_args) > 0:
465+
ret += " // args\n"
466+
for _arg in _args:
467+
ret += " " + _arg["type"] + " " + _arg["name"] + ";\n"
465468
if return_type != "void":
466469
ret += " // return\n"
467470
ret += " " + return_type + " retOriginal;\n"
468471
ret += " };\n"
469472
ret += " auto *pRunner = new LocalRunner();\n"
473+
if not method_info["static"]:
474+
ret += " pRunner->unigine_object_ptr = self->unigine_object_ptr;\n"
470475
for _arg in _args:
471476
ret += " pRunner->" + _arg["name"] + " = " + _arg["name"] + ";\n"
472477
ret += " Python3Runner::runInMainThread(pRunner);\n"

source/plugins/Sea5kg/Python3Scripting/src/python3_wrapper/pytypesobjects/python3_unigine_materials.cpp

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ static PyObject * unigine_Materials_is_initialized(unigine_Materials* self_stati
5050
virtual void run() override {
5151
retOriginal = Unigine::Materials::isInitialized();
5252
};
53-
// args
5453
// return
5554
int retOriginal;
5655
};
@@ -79,7 +78,6 @@ static PyObject * unigine_Materials_get_loading_mode(unigine_Materials* self_sta
7978
virtual void run() override {
8079
retOriginal = Unigine::Materials::getLoadingMode();
8180
};
82-
// args
8381
// return
8482
Unigine::Materials::LOADING_MODE retOriginal;
8583
};
@@ -192,7 +190,6 @@ static PyObject * unigine_Materials_get_num_materials(unigine_Materials* self_st
192190
virtual void run() override {
193191
retOriginal = Unigine::Materials::getNumMaterials();
194192
};
195-
// args
196193
// return
197194
int retOriginal;
198195
};
@@ -256,6 +253,50 @@ static PyObject * unigine_Materials_compile_shaders(unigine_Materials* self_stat
256253
return ret;
257254
};
258255

256+
// public (static): setPrecompileAllShaders
257+
static PyObject * unigine_Materials_set_precompile_all_shaders(unigine_Materials* self_static_null, PyObject *args) {
258+
PyErr_Clear();
259+
PyObject *ret = NULL;
260+
// parse args:
261+
PyObject *pArg1; // bool shaders;
262+
PyArg_ParseTuple(args, "O", &pArg1);
263+
264+
// pArg1
265+
TODO for bool
266+
267+
268+
class LocalRunner : public Python3Runner {
269+
public:
270+
virtual void run() override {
271+
Unigine::Materials::setPrecompileAllShaders(shaders);
272+
};
273+
// args
274+
bool shaders;
275+
};
276+
auto *pRunner = new LocalRunner();
277+
pRunner->shaders = shaders;
278+
Python3Runner::runInMainThread(pRunner);
279+
while (!pRunner->mutexAsync.tryLock(5)) { // milliseconds
280+
}
281+
pRunner->mutexAsync.unlock();
282+
delete pRunner;
283+
Py_INCREF(Py_None);
284+
ret = Py_None;
285+
assert(!PyErr_Occurred());
286+
assert(ret);
287+
goto finally;
288+
except:
289+
Py_XDECREF(ret);
290+
ret = NULL;
291+
finally:
292+
/* If we were to treat arg as a borrowed reference and had Py_INCREF'd above we
293+
* should do this. See below. */
294+
295+
// end
296+
// return: void
297+
return ret;
298+
};
299+
259300
// public (static): createShaders
260301
static PyObject * unigine_Materials_create_shaders(unigine_Materials* self_static_null) {
261302
PyErr_Clear();

source/plugins/Sea5kg/Python3Scripting/src/python3_wrapper/pytypesobjects/python3_unigine_node.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ static PyObject * unigine_Node_rotate(unigine_Node* self, PyObject *args) {
8585
virtual void run() override {
8686
unigine_object_ptr->rotate(angle_x, angle_y, angle_z);
8787
};
88-
// args
8988
Unigine::Ptr<Unigine::Node> unigine_object_ptr;
89+
// args
9090
float angle_x;
9191
float angle_y;
9292
float angle_z;

0 commit comments

Comments
 (0)