65
65
#include < maya/MObjectHandle.h>
66
66
#include < maya/MSelectionList.h>
67
67
#include < maya/MString.h>
68
+ #include < maya/MEventMessage.h>
68
69
#include < ufe/rtid.h>
69
70
70
71
PXR_NAMESPACE_OPEN_SCOPE
@@ -282,9 +283,13 @@ MayaUsdProxyShapeSceneIndex::MayaUsdProxyShapeSceneIndex(
282
283
TfWeakPtr<MayaUsdProxyShapeSceneIndex> ptr (this );
283
284
TfNotice::Register (ptr, &MayaUsdProxyShapeSceneIndex::StageSet);
284
285
TfNotice::Register (ptr, &MayaUsdProxyShapeSceneIndex::ObjectsChanged);
286
+
287
+ _timeChangeCallbackId = MEventMessage::addEventCallback (" timeChanged" , onTimeChanged, this );
285
288
}
286
289
287
- MayaUsdProxyShapeSceneIndex::~MayaUsdProxyShapeSceneIndex () { }
290
+ MayaUsdProxyShapeSceneIndex::~MayaUsdProxyShapeSceneIndex () {
291
+ MMessage::removeCallback (_timeChangeCallbackId);
292
+ }
288
293
289
294
MayaUsdProxyShapeSceneIndexRefPtr MayaUsdProxyShapeSceneIndex::New (
290
295
MayaUsdProxyShapeBase* proxyShape,
@@ -296,6 +301,22 @@ MayaUsdProxyShapeSceneIndexRefPtr MayaUsdProxyShapeSceneIndex::New(
296
301
sceneIndexChainLastElement, usdImagingStageSceneIndex, proxyShape));
297
302
}
298
303
304
+ void MayaUsdProxyShapeSceneIndex::onTimeChanged (void * data)
305
+ {
306
+ auto * instance = reinterpret_cast <MayaUsdProxyShapeSceneIndex*>(data);
307
+ if (!TF_VERIFY (instance)) {
308
+ return ;
309
+ }
310
+ instance->UpdateTime ();
311
+ }
312
+
313
+ void MayaUsdProxyShapeSceneIndex::UpdateTime ()
314
+ {
315
+ if (_usdImagingStageSceneIndex && _proxyShape) {
316
+ _usdImagingStageSceneIndex->SetTime (_proxyShape->getTime ());
317
+ }
318
+ }
319
+
299
320
Ufe::Path MayaUsdProxyShapeSceneIndex::InterpretRprimPath (
300
321
const HdSceneIndexBaseRefPtr& sceneIndex,
301
322
const SdfPath& path)
@@ -339,6 +360,8 @@ void MayaUsdProxyShapeSceneIndex::Populate()
339
360
#endif
340
361
_populated = true ;
341
362
}
363
+ // Set the initial time
364
+ UpdateTime ();
342
365
}
343
366
}
344
367
}
0 commit comments