@@ -398,6 +398,32 @@ RTC_NAMESPACE_BEGIN;
398398 RTC_CATCH_END2 (scene);
399399 }
400400
401+ RTC_API RTCProgressMonitorFunction rtcGetSceneProgressMonitorFunction (RTCScene hscene)
402+ {
403+ Scene* scene = (Scene*) hscene;
404+ RTC_CATCH_BEGIN;
405+ RTC_TRACE (rtcGetSceneProgressMonitorFunction);
406+ RTC_VERIFY_HANDLE (hscene);
407+ RTC_ENTER_DEVICE (hscene);
408+ Lock<MutexSys> lock (g_mutex);
409+ return scene->getProgressMonitorFunction ();
410+ RTC_CATCH_END2 (scene);
411+ return nullptr ;
412+ }
413+
414+ RTC_API void * rtcGetSceneProgressMonitorFunctionUserPtr (RTCScene hscene)
415+ {
416+ Scene* scene = (Scene*) hscene;
417+ RTC_CATCH_BEGIN;
418+ RTC_TRACE (rtcGetSceneProgressMonitorFunctionUserPtr);
419+ RTC_VERIFY_HANDLE (hscene);
420+ RTC_ENTER_DEVICE (hscene);
421+ Lock<MutexSys> lock (g_mutex);
422+ return scene->getProgressMonitorFunctionUserPtr ();
423+ RTC_CATCH_END2 (scene);
424+ return nullptr ;
425+ }
426+
401427 RTC_API void rtcSetSceneBuildQuality (RTCScene hscene, RTCBuildQuality quality)
402428 {
403429 Scene* scene = (Scene*) hscene;
@@ -412,6 +438,18 @@ RTC_NAMESPACE_BEGIN;
412438 RTC_CATCH_END2 (scene);
413439 }
414440
441+ RTC_API RTCBuildQuality rtcGetSceneBuildQuality (RTCScene hscene)
442+ {
443+ Scene* scene = (Scene*) hscene;
444+ RTC_CATCH_BEGIN;
445+ RTC_TRACE (rtcGetSceneBuildQuality);
446+ RTC_VERIFY_HANDLE (hscene);
447+ RTC_ENTER_DEVICE (hscene);
448+ return scene->getBuildQuality ();
449+ RTC_CATCH_END2 (scene);
450+ return RTC_BUILD_QUALITY_MEDIUM;
451+ }
452+
415453 RTC_API void rtcSetSceneFlags (RTCScene hscene, RTCSceneFlags flags)
416454 {
417455 Scene* scene = (Scene*) hscene;
@@ -462,6 +500,18 @@ RTC_NAMESPACE_BEGIN;
462500 RTC_CATCH_END2 (scene);
463501 }
464502
503+ RTC_API bool rtcIsSceneModified (RTCScene hscene)
504+ {
505+ Scene* scene = (Scene*) hscene;
506+ RTC_CATCH_BEGIN;
507+ RTC_TRACE (rtcIsSceneModified);
508+ RTC_VERIFY_HANDLE (hscene);
509+ RTC_ENTER_DEVICE (hscene);
510+ return scene->isModified ();
511+ RTC_CATCH_END2 (scene);
512+ return false ;
513+ }
514+
465515 RTC_API void rtcGetSceneBounds (RTCScene hscene, RTCBounds* bounds_o)
466516 {
467517 Scene* scene = (Scene*) hscene;
@@ -2361,6 +2411,84 @@ RTC_API void rtcSetGeometryTransform(RTCGeometry hgeometry, unsigned int timeSte
23612411 RTC_CATCH_END2 (geometry);
23622412 }
23632413
2414+ RTC_API size_t rtcGetNumAttachedGeometryIDs (RTCScene hscene)
2415+ {
2416+ Scene* scene = (Scene*) hscene;
2417+ RTC_CATCH_BEGIN;
2418+ RTC_TRACE (rtcGetNumAttachedGeometryIDs);
2419+ RTC_VERIFY_HANDLE (hscene);
2420+ RTC_ENTER_DEVICE (hscene);
2421+ unsigned int numGeomIDs = scene->size ();
2422+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2423+ Geometry* ptr = scene->get (i);
2424+ if (!ptr) {
2425+ numGeomIDs -= 1 ;
2426+ }
2427+ }
2428+ return numGeomIDs;
2429+ RTC_CATCH_END2 (scene);
2430+ return 0 ;
2431+ }
2432+
2433+ RTC_API void rtcGetAttachedGeometryIDs (RTCScene hscene, size_t * numGeomIDs, unsigned int * geomIDs)
2434+ {
2435+ Scene* scene = (Scene*) hscene;
2436+ RTC_CATCH_BEGIN;
2437+ RTC_TRACE (rtcGetAttachedGeometryIDs);
2438+ RTC_VERIFY_HANDLE (hscene);
2439+ RTC_VERIFY_HANDLE (numGeomIDs);
2440+ RTC_ENTER_DEVICE (hscene);
2441+ *numGeomIDs = scene->size ();
2442+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2443+ Geometry* ptr = scene->get (i);
2444+ if (!ptr) {
2445+ *numGeomIDs -= 1 ;
2446+ } else if (geomIDs) {
2447+ *geomIDs++ = i;
2448+ }
2449+ }
2450+ RTC_CATCH_END2 (scene);
2451+ }
2452+
2453+ RTC_API size_t rtcGetNumAttachedGeometries (RTCScene hscene)
2454+ {
2455+ Scene* scene = (Scene*) hscene;
2456+ RTC_CATCH_BEGIN;
2457+ RTC_TRACE (rtcGetNumAttachedGeometryIDs);
2458+ RTC_VERIFY_HANDLE (hscene);
2459+ RTC_ENTER_DEVICE (hscene);
2460+ unsigned int numGeomIDs = scene->size ();
2461+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2462+ Geometry* ptr = scene->get (i);
2463+ if (!ptr) {
2464+ numGeomIDs -= 1 ;
2465+ }
2466+ }
2467+ return numGeomIDs;
2468+ RTC_CATCH_END2 (scene);
2469+ return 0 ;
2470+ }
2471+
2472+ RTC_API void rtcGetAttachedGeometries (RTCScene hscene, size_t * numGeoms, RTCGeometry* geometries)
2473+ {
2474+ Scene* scene = (Scene*) hscene;
2475+ RTC_CATCH_BEGIN;
2476+ RTC_TRACE (rtcGetAttachedGeometries);
2477+ RTC_VERIFY_HANDLE (hscene);
2478+ RTC_VERIFY_HANDLE (numGeoms);
2479+ RTC_ENTER_DEVICE (hscene);
2480+ *numGeoms = scene->size ();
2481+ for (unsigned int i = 0 ; i < scene->size (); ++i) {
2482+ Geometry* ptr = scene->get (i);
2483+ if (!ptr) {
2484+ *numGeoms -= 1 ;
2485+ } else if (geometries) {
2486+ *geometries++ = (RTCGeometry) ptr;
2487+ }
2488+ }
2489+ RTC_CATCH_END2 (scene);
2490+ }
2491+
23642492 RTC_API RTCGeometry rtcGetGeometry (RTCScene hscene, unsigned int geomID)
23652493 {
23662494 Scene* scene = (Scene*) hscene;
0 commit comments