@@ -333,6 +333,32 @@ RTC_NAMESPACE_BEGIN;
333333 RTC_CATCH_END2 (scene);
334334 }
335335
336+ RTC_API RTCProgressMonitorFunction rtcGetSceneProgressMonitorFunction (RTCScene hscene)
337+ {
338+ Scene* scene = (Scene*) hscene;
339+ RTC_CATCH_BEGIN;
340+ RTC_TRACE (rtcGetSceneProgressMonitorFunction);
341+ RTC_VERIFY_HANDLE (hscene);
342+ RTC_ENTER_DEVICE (hscene);
343+ Lock<MutexSys> lock (g_mutex);
344+ return scene->getProgressMonitorFunction ();
345+ RTC_CATCH_END2 (scene);
346+ return nullptr ;
347+ }
348+
349+ RTC_API void * rtcGetSceneProgressMonitorFunctionUserPtr (RTCScene hscene)
350+ {
351+ Scene* scene = (Scene*) hscene;
352+ RTC_CATCH_BEGIN;
353+ RTC_TRACE (rtcGetSceneProgressMonitorFunctionUserPtr);
354+ RTC_VERIFY_HANDLE (hscene);
355+ RTC_ENTER_DEVICE (hscene);
356+ Lock<MutexSys> lock (g_mutex);
357+ return scene->getProgressMonitorFunctionUserPtr ();
358+ RTC_CATCH_END2 (scene);
359+ return nullptr ;
360+ }
361+
336362 RTC_API void rtcSetSceneBuildQuality (RTCScene hscene, RTCBuildQuality quality)
337363 {
338364 Scene* scene = (Scene*) hscene;
@@ -348,6 +374,18 @@ RTC_NAMESPACE_BEGIN;
348374 RTC_CATCH_END2 (scene);
349375 }
350376
377+ RTC_API RTCBuildQuality rtcGetSceneBuildQuality (RTCScene hscene)
378+ {
379+ Scene* scene = (Scene*) hscene;
380+ RTC_CATCH_BEGIN;
381+ RTC_TRACE (rtcGetSceneBuildQuality);
382+ RTC_VERIFY_HANDLE (hscene);
383+ RTC_ENTER_DEVICE (hscene);
384+ return scene->getBuildQuality ();
385+ RTC_CATCH_END2 (scene);
386+ return RTC_BUILD_QUALITY_MEDIUM;
387+ }
388+
351389 RTC_API void rtcSetSceneFlags (RTCScene hscene, RTCSceneFlags flags)
352390 {
353391 Scene* scene = (Scene*) hscene;
@@ -400,6 +438,18 @@ RTC_NAMESPACE_BEGIN;
400438 RTC_CATCH_END2 (scene);
401439 }
402440
441+ RTC_API bool rtcIsSceneModified (RTCScene hscene)
442+ {
443+ Scene* scene = (Scene*) hscene;
444+ RTC_CATCH_BEGIN;
445+ RTC_TRACE (rtcIsSceneModified);
446+ RTC_VERIFY_HANDLE (hscene);
447+ RTC_ENTER_DEVICE (hscene);
448+ return scene->isModified ();
449+ RTC_CATCH_END2 (scene);
450+ return false ;
451+ }
452+
403453 RTC_API void rtcGetSceneBounds (RTCScene hscene, RTCBounds* bounds_o)
404454 {
405455 Scene* scene = (Scene*) hscene;
@@ -2109,6 +2159,84 @@ RTC_API void rtcSetGeometryTransform(RTCGeometry hgeometry, unsigned int timeSte
21092159 RTC_CATCH_END2 (geometry);
21102160 }
21112161
2162+ RTC_API size_t rtcGetNumAttachedGeometryIDs (RTCScene hscene)
2163+ {
2164+ Scene* scene = (Scene*) hscene;
2165+ RTC_CATCH_BEGIN;
2166+ RTC_TRACE (rtcGetNumAttachedGeometryIDs);
2167+ RTC_VERIFY_HANDLE (hscene);
2168+ RTC_ENTER_DEVICE (hscene);
2169+ unsigned int numGeomIDs = scene->size ();
2170+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2171+ Geometry* ptr = scene->get (i);
2172+ if (!ptr) {
2173+ numGeomIDs -= 1 ;
2174+ }
2175+ }
2176+ return numGeomIDs;
2177+ RTC_CATCH_END2 (scene);
2178+ return 0 ;
2179+ }
2180+
2181+ RTC_API void rtcGetAttachedGeometryIDs (RTCScene hscene, size_t * numGeomIDs, unsigned int * geomIDs)
2182+ {
2183+ Scene* scene = (Scene*) hscene;
2184+ RTC_CATCH_BEGIN;
2185+ RTC_TRACE (rtcGetAttachedGeometryIDs);
2186+ RTC_VERIFY_HANDLE (hscene);
2187+ RTC_VERIFY_HANDLE (numGeomIDs);
2188+ RTC_ENTER_DEVICE (hscene);
2189+ *numGeomIDs = scene->size ();
2190+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2191+ Geometry* ptr = scene->get (i);
2192+ if (!ptr) {
2193+ *numGeomIDs -= 1 ;
2194+ } else if (geomIDs) {
2195+ *geomIDs++ = i;
2196+ }
2197+ }
2198+ RTC_CATCH_END2 (scene);
2199+ }
2200+
2201+ RTC_API size_t rtcGetNumAttachedGeometries (RTCScene hscene)
2202+ {
2203+ Scene* scene = (Scene*) hscene;
2204+ RTC_CATCH_BEGIN;
2205+ RTC_TRACE (rtcGetNumAttachedGeometryIDs);
2206+ RTC_VERIFY_HANDLE (hscene);
2207+ RTC_ENTER_DEVICE (hscene);
2208+ unsigned int numGeomIDs = scene->size ();
2209+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2210+ Geometry* ptr = scene->get (i);
2211+ if (!ptr) {
2212+ numGeomIDs -= 1 ;
2213+ }
2214+ }
2215+ return numGeomIDs;
2216+ RTC_CATCH_END2 (scene);
2217+ return 0 ;
2218+ }
2219+
2220+ RTC_API void rtcGetAttachedGeometries (RTCScene hscene, size_t * numGeoms, RTCGeometry* geometries)
2221+ {
2222+ Scene* scene = (Scene*) hscene;
2223+ RTC_CATCH_BEGIN;
2224+ RTC_TRACE (rtcGetAttachedGeometries);
2225+ RTC_VERIFY_HANDLE (hscene);
2226+ RTC_VERIFY_HANDLE (numGeoms);
2227+ RTC_ENTER_DEVICE (hscene);
2228+ *numGeoms = scene->size ();
2229+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2230+ Geometry* ptr = scene->get (i);
2231+ if (!ptr) {
2232+ *numGeoms -= 1 ;
2233+ } else if (geometries) {
2234+ *geometries++ = (RTCGeometry) ptr;
2235+ }
2236+ }
2237+ RTC_CATCH_END2 (scene);
2238+ }
2239+
21122240 RTC_API RTCGeometry rtcGetGeometry (RTCScene hscene, unsigned int geomID)
21132241 {
21142242 Scene* scene = (Scene*) hscene;
0 commit comments