@@ -67,17 +67,44 @@ renderer_prepare_scene(PyObject* self, PyObject* args)
6767{
6868 static const char * apcKeywords [] = {
6969 "scene" ,
70+ "cameras" ,
7071 NULL ,
7172 };
7273
7374 PyObject * ptPyScene = NULL ;
74- if (!pl_parse_args ("O" , (const char * * )apcKeywords , args , NULL , __FUNCTION__ ,
75- & ptPyScene ))
75+ PyObject * ptPyCameras = NULL ;
76+ if (!pl_parse_args ("OO" , (const char * * )apcKeywords , args , NULL , __FUNCTION__ ,
77+ & ptPyScene , & ptPyCameras ))
7678 return NULL ;
7779
7880 plScene * ptScene = PyCapsule_GetPointer (ptPyScene , "plScene" );
7981
80- gptRenderer -> prepare_scene (ptScene );
82+ const plCamera * atCameras [4 ] = {0 };
83+ uint32_t uCameraCount = 0 ;
84+
85+ if (PyTuple_Check (ptPyCameras ))
86+ {
87+ Py_ssize_t pySize = PyTuple_Size (ptPyCameras );
88+ for (Py_ssize_t i = 0 ; i < pySize ; ++ i )
89+ {
90+ PyObject * ptPyCamera = PyTuple_GetItem (ptPyCameras , i );
91+ atCameras [i ] = ((pyplCamera * )ptPyCamera )-> ptCamera ;
92+ uCameraCount ++ ;
93+ }
94+ }
95+
96+ else if (PyList_Check (ptPyCameras ))
97+ {
98+ Py_ssize_t pySize = PyList_Size (ptPyCameras );
99+ for (Py_ssize_t i = 0 ; i < pySize ; ++ i )
100+ {
101+ PyObject * ptPyCamera = PyList_GetItem (ptPyCameras , i );
102+ atCameras [i ] = ((pyplCamera * )ptPyCamera )-> ptCamera ;
103+ uCameraCount ++ ;
104+ }
105+ }
106+
107+ gptRenderer -> prepare_scene (ptScene , atCameras , uCameraCount );
81108 Py_RETURN_NONE ;
82109}
83110
@@ -110,7 +137,7 @@ renderer_prepare_view(PyObject* self, PyObject* args)
110137{
111138 static const char * apcKeywords [] = {
112139 "view" ,
113- "camera " ,
140+ "cameras " ,
114141 NULL ,
115142 };
116143
0 commit comments