dev: Add "reading obj value" playground test
This commit is contained in:
parent
c00144464d
commit
e0c9626d68
2 changed files with 222 additions and 0 deletions
66
packages/playground/src/tests/reading-obj-value/index.tsx
Normal file
66
packages/playground/src/tests/reading-obj-value/index.tsx
Normal file
|
@ -0,0 +1,66 @@
|
|||
import studio from '@theatre/studio'
|
||||
import {getProject, types} from '@theatre/core'
|
||||
import state from './reading obj value.theatre-project-state.json'
|
||||
studio.initialize({usePersistentStorage: false})
|
||||
|
||||
const project = getProject('reading obj value', {state})
|
||||
const TOTAL_ELEMENTS = 300
|
||||
const TOTAL_ELEMENTS_R = 1 / TOTAL_ELEMENTS
|
||||
const playbackControlObj = project
|
||||
.sheet('controls sheet')
|
||||
.object('playback control', {
|
||||
interval: types.number(50, {
|
||||
range: [1, 20000],
|
||||
}),
|
||||
})
|
||||
const elements = new Array(TOTAL_ELEMENTS).fill(0).map((_, idx) => {
|
||||
const sheet = project.sheet('sample sheet', `#${idx}`)
|
||||
const obj = sheet.object('sample object', {
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0,
|
||||
},
|
||||
})
|
||||
|
||||
const el = document.createElement('div')
|
||||
|
||||
Object.assign(el.style, {
|
||||
position: 'absolute',
|
||||
height: '2rem',
|
||||
width: '2rem',
|
||||
borderRadius: '50%',
|
||||
background: `hsl(${idx * 360 * TOTAL_ELEMENTS_R}, 100%, 80%)`,
|
||||
left: 'var(--x)',
|
||||
top: 'var(--y)',
|
||||
})
|
||||
|
||||
document.body.appendChild(el)
|
||||
|
||||
return {el, sheet, obj}
|
||||
})
|
||||
|
||||
project.ready.then(() => {
|
||||
// select the playback controls obj so it shows as a tweakable control
|
||||
studio.setSelection([playbackControlObj])
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
const sheet = elements[i].sheet
|
||||
sheet.sequence.position = i * TOTAL_ELEMENTS_R * 5
|
||||
sheet.sequence.play({
|
||||
iterationCount: Infinity,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
function render() {
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
const element = elements[i]
|
||||
// read directly from value to test keepHot from https://linear.app/theatre/issue/P-217/if-objvalue-is-read-make-sure-its-derivation-remains-hot-for-a-while
|
||||
const value = element.obj.value
|
||||
element.el.style.setProperty('--x', value.position.x + 'px')
|
||||
element.el.style.setProperty('--y', value.position.y + 'px')
|
||||
}
|
||||
|
||||
setTimeout(render, playbackControlObj.value.interval)
|
||||
}
|
||||
|
||||
render()
|
|
@ -0,0 +1,156 @@
|
|||
{
|
||||
"sheetsById": {
|
||||
"sample sheet": {
|
||||
"staticOverrides": {
|
||||
"byObject": {
|
||||
"sample object": {
|
||||
"position": {
|
||||
"x": 303,
|
||||
"y": 268
|
||||
},
|
||||
"interval": 50
|
||||
}
|
||||
}
|
||||
},
|
||||
"sequence": {
|
||||
"subUnitsPerUnit": 30,
|
||||
"length": 10,
|
||||
"type": "PositionalSequence",
|
||||
"tracksByObject": {
|
||||
"sample object": {
|
||||
"trackData": {
|
||||
"2LcFioJysu": {
|
||||
"type": "BasicKeyframedTrack",
|
||||
"__debugName": "sample object:[\"position\",\"x\"]",
|
||||
"keyframes": [
|
||||
{
|
||||
"id": "Kxy5pUojNt",
|
||||
"position": 0,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 303
|
||||
},
|
||||
{
|
||||
"id": "Gw4Mws7OD9",
|
||||
"position": 1.833,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 30.799745441261848
|
||||
},
|
||||
{
|
||||
"id": "Hf8yST9Wh5",
|
||||
"position": 8,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 414
|
||||
},
|
||||
{
|
||||
"id": "yVYv4gA4oO",
|
||||
"position": 10,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 303
|
||||
}
|
||||
]
|
||||
},
|
||||
"oWt_kxiglj": {
|
||||
"type": "BasicKeyframedTrack",
|
||||
"__debugName": "sample object:[\"position\",\"y\"]",
|
||||
"keyframes": [
|
||||
{
|
||||
"id": "idPYVcMMFV",
|
||||
"position": 0,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 268
|
||||
},
|
||||
{
|
||||
"id": "DkaWGJJs5y",
|
||||
"position": 3.1,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 136.76766033714398
|
||||
},
|
||||
{
|
||||
"id": "wSMOxRFOHI",
|
||||
"position": 5,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 518
|
||||
},
|
||||
{
|
||||
"id": "iurvWeyPBD",
|
||||
"position": 7.3,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 274.6142665912034
|
||||
},
|
||||
{
|
||||
"id": "9IRlJBphrf",
|
||||
"position": 10,
|
||||
"connectedRight": true,
|
||||
"handles": [
|
||||
0.5,
|
||||
1,
|
||||
0.5,
|
||||
0
|
||||
],
|
||||
"value": 268
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"trackIdByPropPath": {
|
||||
"[\"position\",\"x\"]": "2LcFioJysu",
|
||||
"[\"position\",\"y\"]": "oWt_kxiglj"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitionVersion": "0.4.0",
|
||||
"revisionHistory": [
|
||||
"B_AcNZ7EnqbSzdJj"
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue