AllenCell / AllenCell/vole-core
Remove direct external access to `IDrawableObject`s
- Lingua principale
- TypeScript
- Stelle
- 106
- Fork
- 11
- Merge medio
- 3g 51m
- PR unite (30g)
- 12
Descrizione
## Use Case
Currently, clients create their own `IDrawableObject` objects and pass them into `vole-core`. This causes us to depend on `three`'s API externally.
Ideally, we should instead have vole-core manage its own objects, and users would just pass in settings objects to update them.
## Solution
- Remove `view3d.addObject` and related methods.
- Clients should call `view3d.addObject(type, data)` and receive a typed handle back.
- [ ] Clients can update via `view3d.updateObjectData(handle, data)`.
- [ ] Clients can remove objects via `view3d.removeObject(handle)`.
- [ ] Change `IDrawableObjects` to have single `updateSettings()`, which has no `three` types.
## Alternatives
Consider typing the handles and the settings objects?
```ts
type LineHandle: `L${number}`
type ArrowsHandle: `A${number}`
type SpheresHandle: `S${number}`
type HandleToSettings = {
[LineHandle]: LineData,
[ArrowsHandle]: ArrowData
}
view3d.updateObjectSettings(objectHandle: T, settingsToUpdate: Partial>)
```
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.