Skip to content

Commit f92453b

Browse files
committed
feat: add new culling support from PL
1 parent c7b18c2 commit f92453b

3 files changed

Lines changed: 33 additions & 6 deletions

File tree

extensions/pl_renderer_ext_m.c

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

pilotlight/pilotlight.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,7 @@ class plRendererI:
10221022
...
10231023

10241024
@staticmethod
1025-
def prepare_scene(scene: plScene):
1025+
def prepare_scene(scene: plScene, cameras: List[plCamera]):
10261026
...
10271027

10281028
@staticmethod

sandbox/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ def pl_app_update(self):
189189
ImGui.End()
190190

191191
camera = plEcsI.get_component(self.ptComponentLibrary, plCameraEcsI.get_ecs_type_key(), self.tMainCamera)
192-
plRendererI.prepare_scene(self.ptScene)
192+
plRendererI.prepare_scene(self.ptScene, [camera])
193193
plRendererI.prepare_view(self.ptView, camera)
194194
plRendererI.render_view(self.ptView, camera)
195195

0 commit comments

Comments
 (0)