@@ -131,6 +131,8 @@ USD_API
131131bool
132132UsdAttributeQuery::_Get (T* value, UsdTimeCode time) const
133133{
134+ SdfAbstractDataTypedValue<T> result (value);
135+
134136 // If the requested time is default but the resolved value source is time
135137 // varying, then the stored resolve info won't give us the correct value
136138 // for default time. In this case we have to get the resolve info at default
@@ -148,24 +150,46 @@ UsdAttributeQuery::_Get(T* value, UsdTimeCode time) const
148150 _attr, &defaultResolveInfo, &defaultTime);
149151 }
150152 return _attr._GetStage ()->_GetValueFromResolveInfo (
151- defaultResolveInfo, defaultTime, _attr, value );
153+ defaultResolveInfo, defaultTime, _attr, &result );
152154 }
153155
154156 return _attr._GetStage ()->_GetValueFromResolveInfo (
155- _resolveInfo, time, _attr, value );
157+ _resolveInfo, time, _attr, &result, _resolveTarget. get () );
156158}
157159
158160bool
159161UsdAttributeQuery::Get (VtValue* value, UsdTimeCode time) const
160162{
161- return _Get (value, time);
163+ // If the requested time is default but the resolved value source is time
164+ // varying, then the stored resolve info won't give us the correct value
165+ // for default time. In this case we have to get the resolve info at default
166+ // time and query the value from that.
167+ if (time.IsDefault () &&
168+ _resolveInfo.ValueSourceMightBeTimeVarying ()) {
169+
170+ static const UsdTimeCode defaultTime = UsdTimeCode::Default ();
171+ UsdResolveInfo defaultResolveInfo;
172+ if (_resolveTarget && TF_VERIFY (!_resolveTarget->IsNull ())) {
173+ _attr._GetStage ()->_GetResolveInfoWithResolveTarget (
174+ _attr, *_resolveTarget, &defaultResolveInfo, &defaultTime);
175+ } else {
176+ _attr._GetStage ()->_GetResolveInfo (
177+ _attr, &defaultResolveInfo, &defaultTime);
178+ }
179+ return _attr._GetStage ()->_GetValueFromResolveInfo (
180+ defaultResolveInfo, defaultTime, _attr, value);
181+ }
182+
183+ return _attr._GetStage ()->_GetValueFromResolveInfo (
184+ _resolveInfo, time, _attr, value, _resolveTarget.get ());
162185}
163186
164187bool
165188UsdAttributeQuery::GetTimeSamples (std::vector<double >* times) const
166189{
167- return _attr._GetStage ()->_GetTimeSamplesInIntervalFromResolveInfo (
168- _resolveInfo, _attr, GfInterval::GetFullInterval (), times);
190+ return _attr._GetStage ()->_GetTimeSamplesInInterval (
191+ _attr, GfInterval::GetFullInterval (), times,
192+ &_resolveInfo, _resolveTarget.get ());
169193}
170194
171195TsSpline
194218UsdAttributeQuery::GetTimeSamplesInInterval (const GfInterval& interval,
195219 std::vector<double >* times) const
196220{
197- return _attr._GetStage ()->_GetTimeSamplesInIntervalFromResolveInfo (
198- _resolveInfo, _attr, interval, times);
221+ return _attr._GetStage ()->
222+ _GetTimeSamplesInInterval (_attr, interval, times,
223+ &_resolveInfo, _resolveTarget.get ());
199224}
200225
201226/* static */
@@ -237,9 +262,9 @@ UsdAttributeQuery::GetUnionedTimeSamplesInInterval(
237262
238263 // This will work even if the attributes belong to different
239264 // USD stages.
240- success = attr.GetStage ()->_GetTimeSamplesInIntervalFromResolveInfo (
241- attrQuery. _resolveInfo , attr, interval, &attrSampleTimes)
242- && success;
265+ success = attr.GetStage ()->_GetTimeSamplesInInterval (
266+ attr, interval, &attrSampleTimes, &attrQuery. _resolveInfo ,
267+ attrQuery. _resolveTarget . get ()) && success;
243268
244269 // Merge attrSamplesTimes into the times vector.
245270 Usd_MergeTimeSamples (times, attrSampleTimes, &tempUnionSampleTimes);
@@ -251,8 +276,8 @@ UsdAttributeQuery::GetUnionedTimeSamplesInInterval(
251276size_t
252277UsdAttributeQuery::GetNumTimeSamples () const
253278{
254- return _attr._GetStage ()->_GetNumTimeSamplesFromResolveInfo (
255- _resolveInfo, _attr );
279+ return _attr._GetStage ()->_GetNumTimeSamples (
280+ _attr, & _resolveInfo, _resolveTarget. get () );
256281}
257282
258283bool
@@ -261,9 +286,9 @@ UsdAttributeQuery::GetBracketingTimeSamples(double desiredTime,
261286 double * upper,
262287 bool * hasTimeSamples) const
263288{
264- return _attr._GetStage ()->_GetBracketingTimeSamplesFromResolveInfo (
265- _resolveInfo, _attr, desiredTime, /* authoredOnly */ false ,
266- lower, upper, hasTimeSamples );
289+ return _attr._GetStage ()->_GetBracketingTimeSamples (
290+ _attr, desiredTime, lower, upper, hasTimeSamples ,
291+ &_resolveInfo, _resolveTarget. get () );
267292}
268293
269294bool
@@ -305,8 +330,8 @@ UsdAttributeQuery::GetFallbackValue(VtValue* value) const
305330bool
306331UsdAttributeQuery::ValueMightBeTimeVarying () const
307332{
308- return _attr._GetStage ()->_ValueMightBeTimeVaryingFromResolveInfo (
309- _resolveInfo, _attr);
333+ return _attr._GetStage ()->
334+ _ValueMightBeTimeVaryingFromResolveInfo ( _resolveInfo, _attr);
310335}
311336
312337ARCH_PRAGMA_PUSH
0 commit comments