diff --git a/src/vasingleton.cpp b/src/vasingleton.cpp index 3155c41db8f5e8fe40de41bf790618af3781e1c6..fd9c0bc94b41e08aee4a6a8714a21a42399d953b 100644 --- a/src/vasingleton.cpp +++ b/src/vasingleton.cpp @@ -112,6 +112,19 @@ static struct PyMethodDef va_methods[] = { "get_sound_portal_enabled", ( PyCFunction ) get_sound_portal_enabled, METH_FASTCALL, no_doc }, { "set_sound_portal_enabled", ( PyCFunction ) set_sound_portal_enabled, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_sound_speed", ( PyCFunction ) get_homogeneous_medium_sound_speed, METH_FASTCALL, no_doc }, + { "set_homogeneous_medium_sound_speed", ( PyCFunction ) set_homogeneous_medium_sound_speed, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_temperature", ( PyCFunction ) get_homogeneous_medium_temperature, METH_FASTCALL, no_doc }, + { "set_homogeneous_medium_temperature", ( PyCFunction ) set_homogeneous_medium_temperature, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_static_pressure", ( PyCFunction ) get_homogeneous_medium_static_pressure, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_static_pressure", ( PyCFunction ) get_homogeneous_medium_static_pressure, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_relative_humidity", ( PyCFunction ) get_homogeneous_medium_relative_humidity, METH_FASTCALL, no_doc }, + { "set_homogeneous_medium_relative_humidity", ( PyCFunction ) set_homogeneous_medium_relative_humidity, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_shift_speed", ( PyCFunction ) get_homogeneous_medium_shift_speed, METH_FASTCALL, no_doc }, + { "set_homogeneous_medium_shift_speed", ( PyCFunction ) set_homogeneous_medium_shift_speed, METH_FASTCALL, no_doc }, + { "get_homogeneous_medium_parameters", ( PyCFunction ) get_homogeneous_medium_parameters, METH_FASTCALL, no_doc }, + { "set_homogeneous_medium_parameters", ( PyCFunction ) set_homogeneous_medium_parameters, METH_FASTCALL, no_doc }, + { "get_rendering_modules", ( PyCFunction ) get_rendering_modules, METH_FASTCALL, no_doc }, { "set_rendering_module_muted", ( PyCFunction ) set_rendering_module_muted, METH_FASTCALL, no_doc }, { "get_rendering_module_muted", ( PyCFunction ) get_rendering_module_muted, METH_FASTCALL, no_doc }, diff --git a/src/vasingletonmethods.hpp b/src/vasingletonmethods.hpp index 396bdf73a729ae3227e03bf1a9bcf307e81ddf36..180e3461d3310d9ab19b8c133138b8b4f891df5e 100644 --- a/src/vasingletonmethods.hpp +++ b/src/vasingletonmethods.hpp @@ -271,9 +271,7 @@ static PyObject* call_module( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, Py std::string sModuleName = std::string( pcModuleName ); CVAStruct oInArgs = ConvertPythonDictToVAStruct( pArgumentsDict ); - CVAStruct oOutArgs; - - oOutArgs = g_pVANetClient->GetCoreInstance()->CallModule( sModuleName, oInArgs ); + CVAStruct oOutArgs = g_pVANetClient->GetCoreInstance()->CallModule( sModuleName, oInArgs ); return ConvertVAStructToPythonDict( oOutArgs ); @@ -1742,6 +1740,164 @@ static PyObject* set_sound_portal_enabled( PyObject*, PyObject** ppArgs, Py_ssiz VAPY_CATCH_RETURN; }; + +static PyObject* get_homogeneous_medium_sound_speed( PyObject*, PyObject**, Py_ssize_t, PyObject* ) +{ + VAPY_REQUIRE_CONN_TRY; + return PyFloat_FromDouble( g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumSoundSpeed() ); + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_sound_speed( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "sound_speed", NULL }; + static _PyArg_Parser _parser = { "d:set_homogeneous_medium_sound_speed", _keywords, 0 }; + double dSoundSpeed = -1; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &dSoundSpeed ) ) + return NULL; + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumSoundSpeed( dSoundSpeed ); + return Py_None; + + VAPY_CATCH_RETURN; +}; +static PyObject* get_homogeneous_medium_temperature( PyObject*, PyObject**, Py_ssize_t, PyObject* ) +{ + VAPY_REQUIRE_CONN_TRY; + return PyFloat_FromDouble( g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumTemperature() ); + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_temperature( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "temperature", NULL }; + static _PyArg_Parser _parser = { "d:set_homogeneous_medium_temperature", _keywords, 0 }; + double dTemperature = -1; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &dTemperature ) ) + return NULL; + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumTemperature( dTemperature ); + return Py_None; + + VAPY_CATCH_RETURN; +}; + +static PyObject* get_homogeneous_medium_static_pressure( PyObject*, PyObject**, Py_ssize_t, PyObject* ) +{ + VAPY_REQUIRE_CONN_TRY; + return PyFloat_FromDouble( g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumStaticPressure() ); + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_static_pressure( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "static_pressure", NULL }; + static _PyArg_Parser _parser = { "d:set_homogeneous_medium_static_pressure", _keywords, 0 }; + double dStaticPressure = -1; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &dStaticPressure ) ) + return NULL; + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumStaticPressure( dStaticPressure ); + return Py_None; + + VAPY_CATCH_RETURN; +}; + +static PyObject* get_homogeneous_medium_relative_humidity( PyObject*, PyObject**, Py_ssize_t, PyObject* ) +{ + VAPY_REQUIRE_CONN_TRY; + return PyFloat_FromDouble( g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumRelativeHumidity() ); + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_relative_humidity( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "relative_humidity", NULL }; + static _PyArg_Parser _parser = { "d:set_homogeneous_medium_relative_humidity", _keywords, 0 }; + double dRelativeHumidity = -1; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &dRelativeHumidity ) ) + return NULL; + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumRelativeHumidity( dRelativeHumidity ); + return Py_None; + + VAPY_CATCH_RETURN; +}; + +static PyObject* get_homogeneous_medium_shift_speed( PyObject*, PyObject**, Py_ssize_t, PyObject* ) +{ + VAPY_REQUIRE_CONN_TRY; + VAVec3 v3ShiftSpeed = g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumShiftSpeed(); + + PyObject* pList = PyList_New( 3 ); + PyList_SetItem( pList, 0, PyFloat_FromDouble( v3ShiftSpeed.x ) ); + PyList_SetItem( pList, 1, PyFloat_FromDouble( v3ShiftSpeed.y ) ); + PyList_SetItem( pList, 2, PyFloat_FromDouble( v3ShiftSpeed.z ) ); + + return pList; + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_shift_speed( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "shift_speed", NULL }; + static _PyArg_Parser _parser = { "(ddd):set_homogeneous_medium_shift_speed", _keywords, 0 }; + VAVec3 v3ShiftSpeed; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &v3ShiftSpeed.x, &v3ShiftSpeed.y, &v3ShiftSpeed.z ) ) + return NULL; + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumShiftSpeed( v3ShiftSpeed ); + return Py_None; + + VAPY_CATCH_RETURN; +}; + +static PyObject* get_homogeneous_medium_parameters( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "arguments", NULL }; + static _PyArg_Parser _parser = { "|O!:get_homogeneous_medium_parameters", _keywords, 0 }; + PyObject* pParamArgs = nullptr; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, pParamArgs ) ) + return NULL; + + CVAStruct oArgs = ConvertPythonDictToVAStruct( pParamArgs ); + CVAStruct oParameters = g_pVANetClient->GetCoreInstance()->GetHomogeneousMediumParameters( oArgs ); + + return ConvertVAStructToPythonDict( oParameters ); + VAPY_CATCH_RETURN; +}; + +static PyObject* set_homogeneous_medium_parameters( PyObject*, PyObject** ppArgs, Py_ssize_t nArgs, PyObject* pKeywordNames ) +{ + VAPY_REQUIRE_CONN_TRY; + + static const char * const _keywords[] = { "parameters", NULL }; + static _PyArg_Parser _parser = { "O!:set_homogeneous_medium_parameters", _keywords, 0 }; + PyObject* pParameters = nullptr; + if( !_PyArg_ParseStack( ppArgs, nArgs, pKeywordNames, &_parser, &pParameters ) ) + return NULL; + + CVAStruct oParameters = ConvertPythonDictToVAStruct( pParameters ); + + g_pVANetClient->GetCoreInstance()->SetHomogeneousMediumParameters( oParameters ); + return Py_None; + + VAPY_CATCH_RETURN; +}; + + static PyObject* get_rendering_modules( PyObject*, PyObject* ) { VAPY_REQUIRE_CONN_TRY;