Replace warnings with notifications
Also rewrote all warnings to be more helpful and readable.
This commit is contained in:
parent
62bc12ab51
commit
dee2361c95
3 changed files with 41 additions and 5 deletions
|
@ -16,6 +16,7 @@ import DefaultPlaybackController from './playbackControllers/DefaultPlaybackCont
|
||||||
import TheatreSequence from './TheatreSequence'
|
import TheatreSequence from './TheatreSequence'
|
||||||
import type {ILogger} from '@theatre/shared/logger'
|
import type {ILogger} from '@theatre/shared/logger'
|
||||||
import type {ISequence} from '..'
|
import type {ISequence} from '..'
|
||||||
|
import {notify} from '@theatre/shared/notify'
|
||||||
|
|
||||||
export type IPlaybackRange = [from: number, to: number]
|
export type IPlaybackRange = [from: number, to: number]
|
||||||
|
|
||||||
|
@ -231,10 +232,23 @@ export default class Sequence {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (range[1] > sequenceDuration) {
|
if (range[1] > sequenceDuration) {
|
||||||
console.warn(
|
notify.warning(
|
||||||
`Argument conf.range[1] in sequence.play(conf) cannot be longer than the duration of the sequence, which is ${sequenceDuration}s. ${JSON.stringify(
|
"Couldn't play sequence in given range",
|
||||||
|
`Your animation will still play until the end of the sequence, however the argument \`conf.range[1]\` given in \`sequence.play(conf)\` (${JSON.stringify(
|
||||||
range[1],
|
range[1],
|
||||||
)} given.`,
|
)}s) is longer than the duration of the sequence (${sequenceDuration}s).
|
||||||
|
|
||||||
|
To fix this, either set \`conf.range[1]\` to be less the duration of the sequence, or adjust the sequence duration in the UI.`,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
url: 'https://www.theatrejs.com/docs/latest/manual/sequences',
|
||||||
|
title: 'Sequences',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'https://www.theatrejs.com/docs/latest/manual/sequences',
|
||||||
|
title: 'Playback API',
|
||||||
|
},
|
||||||
|
],
|
||||||
)
|
)
|
||||||
range[1] = sequenceDuration
|
range[1] = sequenceDuration
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import type {
|
||||||
IPlaybackController,
|
IPlaybackController,
|
||||||
IPlaybackState,
|
IPlaybackState,
|
||||||
} from './DefaultPlaybackController'
|
} from './DefaultPlaybackController'
|
||||||
|
import {notify} from '@theatre/shared/notify'
|
||||||
|
|
||||||
export default class AudioPlaybackController implements IPlaybackController {
|
export default class AudioPlaybackController implements IPlaybackController {
|
||||||
_mainGain: GainNode
|
_mainGain: GainNode
|
||||||
|
@ -186,8 +187,22 @@ export default class AudioPlaybackController implements IPlaybackController {
|
||||||
currentSource.playbackRate.value = rate
|
currentSource.playbackRate.value = rate
|
||||||
|
|
||||||
if (iterationCount > 1000) {
|
if (iterationCount > 1000) {
|
||||||
console.warn(
|
notify.warning(
|
||||||
`Audio-controlled sequences cannot have an iterationCount larger than 1000. It has been clamped to 1000.`,
|
"Can't play sequences with audio more than 1000 times",
|
||||||
|
`The sequence will still play, but only 1000 times. The \`iterationCount: ${iterationCount}\` provided to \`sequence.play()\`
|
||||||
|
is too high for a sequence with audio.
|
||||||
|
|
||||||
|
To fix this, either set \`iterationCount\` to a lower value, or remove the audio from the sequence.`,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
url: 'https://www.theatrejs.com/docs/latest/manual/audio',
|
||||||
|
title: 'Using Audio',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'https://www.theatrejs.com/docs/latest/api/core#sequence.attachaudio',
|
||||||
|
title: 'Audio API',
|
||||||
|
},
|
||||||
|
],
|
||||||
)
|
)
|
||||||
iterationCount = 1000
|
iterationCount = 1000
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import type {
|
||||||
} from '@theatre/core/propTypes/internals'
|
} from '@theatre/core/propTypes/internals'
|
||||||
import type SheetObject from '@theatre/core/sheetObjects/SheetObject'
|
import type SheetObject from '@theatre/core/sheetObjects/SheetObject'
|
||||||
import type {ObjectAddressKey} from '@theatre/shared/utils/ids'
|
import type {ObjectAddressKey} from '@theatre/shared/utils/ids'
|
||||||
|
import {notify} from '@theatre/shared/notify'
|
||||||
|
|
||||||
export type SheetObjectPropTypeConfig =
|
export type SheetObjectPropTypeConfig =
|
||||||
PropTypeConfig_Compound<UnknownValidCompoundProps>
|
PropTypeConfig_Compound<UnknownValidCompoundProps>
|
||||||
|
@ -181,6 +182,12 @@ export default class TheatreSheet implements ISheet {
|
||||||
|
|
||||||
const obj = internal.getObject(sanitizedPath)
|
const obj = internal.getObject(sanitizedPath)
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
|
notify.warning(
|
||||||
|
`Couldn\'t delete object "${sanitizedPath}"`,
|
||||||
|
`There is no object with key "${sanitizedPath}".
|
||||||
|
|
||||||
|
To fix this, make sure you are calling \`sheet.deleteObject("${sanitizedPath}")\` with the correct key.`,
|
||||||
|
)
|
||||||
console.warn(`Object key "${sanitizedPath}" does not exist.`)
|
console.warn(`Object key "${sanitizedPath}" does not exist.`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue