diff options
Diffstat (limited to 'sources/pyside6/PySide6')
| -rw-r--r-- | sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml | 10 | ||||
| -rw-r--r-- | sources/pyside6/PySide6/glue/qtquick3d.cpp | 21 |
2 files changed, 31 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml index fe8f4e700..b981de4bc 100644 --- a/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml +++ b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml @@ -22,6 +22,16 @@ </object-type> <object-type name="QQuick3DInstancing"> <value-type name="InstanceTableEntry"/> + <add-function signature="getInstanceBufferOverride()" + return-type="std::pair<QByteArray,int>" python-override="true"/> + <modify-function signature="getInstanceBuffer(int*)"> + <inject-code class="shell" position="override" file="../glue/qtquick3d.cpp" + snippet="qquick3dinstancing-getinstancebuffer-virtual-redirect"/> + <modify-argument index="return" pyi-type="Tuple[bool, str]"/> + <modify-argument index="1"><remove-default-expression/><remove-argument/></modify-argument> + <inject-code class="target" position="beginning" file="../glue/qtquick3d.cpp" + snippet="qquick3dinstancing-getinstancebuffer-return"/> + </modify-function> </object-type> <object-type name="QQuick3DTextureData"> <enum-type name="Format"/> diff --git a/sources/pyside6/PySide6/glue/qtquick3d.cpp b/sources/pyside6/PySide6/glue/qtquick3d.cpp new file mode 100644 index 000000000..0139913ad --- /dev/null +++ b/sources/pyside6/PySide6/glue/qtquick3d.cpp @@ -0,0 +1,21 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +/********************************************************************* + * INJECT CODE + ********************************************************************/ + +// @snippet qquick3dinstancing-getinstancebuffer-virtual-redirect +std::pair<QByteArray, int> resultPair = getInstanceBufferOverride(gil, pyOverride.object()); +if (instanceCount != nullptr) + *instanceCount = resultPair.second; +return resultPair.first; +// @snippet qquick3dinstancing-getinstancebuffer-virtual-redirect + +// @snippet qquick3dinstancing-getinstancebuffer-return +int count{}; +%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&count); +%PYARG_0 = PyTuple_New(2); +PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_)); +PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](count)); +// @snippet qquick3dinstancing-getinstancebuffer-return |
