private void RecalculateRTMatrixCache()
{
if (!_isSRTMatrix)
{
throw new InvalidOperationException("Attempted to update RT matrix cache for non-SRT matrix.");
}
if (_isCachedRTLocalMatrixUpToDate)
{
throw new InvalidOperationException("Attempted to update RT matrix cache when it's already up-to-date. This would incur a performance penalty if the operation continued.");
}
_cachedRTLocalMatrix =
Matrix.CreateFromQuaternion(_srtLocalRotation) *
Matrix.CreateTranslation(_srtLocalPosition);
_isCachedRTLocalMatrixUpToDate = true;
}