void ActivityBase::endActivity()
{ // this is a regular activity end
mbIsActive = false;
// Activity is ending, queue event, then if( mpEndEvent )
mrEventQueue.addEvent( mpEndEvent );
// release references
mpEndEvent.reset();
}
void ActivityBase::dequeued()
{ // xxx todo: // // ignored here, if we're still active. Discrete // // activities are dequeued after every perform() call, // // thus, the call is only significant when isActive() == // // false. if( !isActive() )
endAnimation();
}
void ActivityBase::end()
{ if (!isActive() || isDisposed()) return; // assure animation is started: if (mbFirstPerformCall) {
mbFirstPerformCall = false; // notify derived classes that we're starting now
startAnimation();
}
// clamp nT to permissible [0,1] range
nT = std::clamp( nT, 0.0, 1.0 );
// take acceleration/deceleration into account. if the sum // of mnAccelerationFraction and mnDecelerationFraction // exceeds 1.0, ignore both (that's according to SMIL spec) if( (mnAccelerationFraction > 0.0 ||
mnDecelerationFraction > 0.0) &&
mnAccelerationFraction + mnDecelerationFraction <= 1.0 )
{ /* // calc accelerated/decelerated time.
// We have three intervals: // 1 [0,a] // 2 [a,d] // 3 [d,1] (with a and d being acceleration/deceleration // fraction, resp.)
// The change rate during interval 1 is constantly // increasing, reaching 1 at a. It then stays at 1, // starting a linear decrease at d, ending with 0 at // time 1. The integral of this function is the // required new time nT'.
// As we arbitrarily assumed 1 as the upper value of // the change rate, the integral must be normalized to // reach nT'=1 at the end of the interval. This // normalization constant is:
// c = 1 - 0.5a - 0.5d
// The integral itself then amounts to:
// 0.5 nT^2 / a + (nT-a) + (nT - 0.5 nT^2 / d)
// (where each of the three summands correspond to the // three intervals above, and are applied only if nT // has reached the corresponding interval)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.