Unify Derivation and Prism 8/n
This commit is contained in:
parent
acf34d393d
commit
27b9c96afd
3 changed files with 9 additions and 9 deletions
|
@ -41,7 +41,7 @@ function useForceUpdate(debugLabel?: string) {
|
||||||
/**
|
/**
|
||||||
* A React hook that executes the callback function and returns its return value
|
* A React hook that executes the callback function and returns its return value
|
||||||
* whenever there's a change in the values of the dependency array, or in the
|
* whenever there's a change in the values of the dependency array, or in the
|
||||||
* derivations that are used within the callback function.
|
* prisms that are used within the callback function.
|
||||||
*
|
*
|
||||||
* @param fn - The callback function
|
* @param fn - The callback function
|
||||||
* @param deps - The dependency array
|
* @param deps - The dependency array
|
||||||
|
@ -285,7 +285,7 @@ function queueIfNeeded() {
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* const num = new Box(1)
|
* const num = new Box(1)
|
||||||
* const isPositiveD = prism(() => num.derivation.getValue() >= 0)
|
* const isPositiveD = prism(() => num.prism.getValue() >= 0)
|
||||||
*
|
*
|
||||||
* const Comp = () => {
|
* const Comp = () => {
|
||||||
* return <div>{useDerivation(isPositiveD)}</div>
|
* return <div>{useDerivation(isPositiveD)}</div>
|
||||||
|
|
|
@ -38,7 +38,7 @@ export default class Sequence {
|
||||||
publicApi: TheatreSequence
|
publicApi: TheatreSequence
|
||||||
|
|
||||||
private _playbackControllerBox: IBox<IPlaybackController>
|
private _playbackControllerBox: IBox<IPlaybackController>
|
||||||
private _statePointerDerivation: Prism<Pointer<IPlaybackState>>
|
private _prismOfStatePointer: Prism<Pointer<IPlaybackState>>
|
||||||
private _positionD: Prism<number>
|
private _positionD: Prism<number>
|
||||||
private _positionFormatterD: Prism<ISequencePositionFormatter>
|
private _positionFormatterD: Prism<ISequencePositionFormatter>
|
||||||
_playableRangeD: undefined | Prism<{start: number; end: number}>
|
_playableRangeD: undefined | Prism<{start: number; end: number}>
|
||||||
|
@ -66,12 +66,12 @@ export default class Sequence {
|
||||||
playbackController ?? new DefaultPlaybackController(getCoreTicker()),
|
playbackController ?? new DefaultPlaybackController(getCoreTicker()),
|
||||||
)
|
)
|
||||||
|
|
||||||
this._statePointerDerivation = prism(
|
this._prismOfStatePointer = prism(
|
||||||
() => this._playbackControllerBox.prism.getValue().statePointer,
|
() => this._playbackControllerBox.prism.getValue().statePointer,
|
||||||
)
|
)
|
||||||
|
|
||||||
this._positionD = prism(() => {
|
this._positionD = prism(() => {
|
||||||
const statePointer = this._statePointerDerivation.getValue()
|
const statePointer = this._prismOfStatePointer.getValue()
|
||||||
return val(statePointer.position)
|
return val(statePointer.position)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ export default class Sequence {
|
||||||
return this._positionD
|
return this._positionD
|
||||||
} else if (prop === 'playing') {
|
} else if (prop === 'playing') {
|
||||||
return prism(() => {
|
return prism(() => {
|
||||||
return val(this._statePointerDerivation.getValue().playing)
|
return val(this._prismOfStatePointer.getValue().playing)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
return prism(() => undefined)
|
return prism(() => undefined)
|
||||||
|
@ -110,8 +110,8 @@ export default class Sequence {
|
||||||
return this._positionFormatterD.getValue()
|
return this._positionFormatterD.getValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
get derivationToStatePointer() {
|
get prismOfStatePointer() {
|
||||||
return this._statePointerDerivation
|
return this._prismOfStatePointer
|
||||||
}
|
}
|
||||||
|
|
||||||
get length() {
|
get length() {
|
||||||
|
|
|
@ -85,7 +85,7 @@ export default class SheetObject implements IdentityPrismProvider {
|
||||||
* if boo.bar.baz is sequenced and the sequence is playing, this prism will recalculate on every frame.
|
* if boo.bar.baz is sequenced and the sequence is playing, this prism will recalculate on every frame.
|
||||||
* This might sound inefficient, but we have a few tricks to make it fast:
|
* This might sound inefficient, but we have a few tricks to make it fast:
|
||||||
*
|
*
|
||||||
* First, on each recalculation, most of the derivations that this prism depends on will not have changed,
|
* First, on each recalculation, most of the prisms that this prism depends on will not have changed,
|
||||||
* and so reading them is cheap. For example, if foo.bar.baz changed due to being sequenced, but
|
* and so reading them is cheap. For example, if foo.bar.baz changed due to being sequenced, but
|
||||||
* foo.bar2 hasn't because it is static, reading foo.bar2 will be cheap.
|
* foo.bar2 hasn't because it is static, reading foo.bar2 will be cheap.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue